[英]Elasticsearch - How to do a partial match from your query
我对Elasticsearch有点陌生,我想知道如何对特定文件进行查询的部分匹配。
可以说我有一个名为“部门”的字段,它的值是“会计”。 因此,当我搜索“会计”之类的内容时,我应该能够得到结果。
例如:-以下是我的两个文件:
{
"name": "Joe",
"department": "finance"
},
{
"name": "Matt",
"department": "accounting"
}
我在外勤department
搜索查询是The accounting
或The accounting department
,我的预期结果应该是:
{
"name": "Matt",
"department": "accounting"
}
更新:
@Russ Cam:标准分析器会删除所有标点符号和特殊字符,如果我将外地部门中的值保存为dept/accounting
,当我搜索dept: the dept/accounting
时该怎么办dept: the dept/accounting
我应该得到那些拥有部门的文档值作为dept/accounting
。
我不希望ES在有人搜索dept
或accounting
时向我提供部门部门的文件作为dept/accounting
accounting
。 这可能吗?
假设以下是我在ES中的文档:
{
"name": "Matt",
"department": "dept/accounting"
},
{
"name": "Kate",
"department": "dept"
},
{
"name": "Adam",
"department": "accounting"
}
用户搜索dept
,他得到:
{
"name": "Kate",
"department": "dept"
}
当用户搜索blah blah dept/accounting blah
他应该只会得到以下信息:
{
"name": "Matt",
"department": "dept/accounting"
}
默认情况下,Elasticsearch支持最佳匹配方法,默认布尔运算符为OR
。 这应该可以立即使用,例如Query String
查询,请参阅https://www.elastic.co/guide/zh-CN/elasticsearch/reference/current/query-dsl-query-string-query.html
您是否尝试过匹配查询,这应该适合您
{
"query": {
"match": {
"department": "accounting"
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.