elasticsearch Elasticsearch-使用analyzer进行span_近距离查询
我需要帮助理解Elasticsearch行为,同时在某些文本字段中搜索单词。我有一个文本字段“description”,其映射如下所示:elasticsearch Elasticsearch-使用analyzer进行span_近距离查询,elasticsearch,search,elasticsearch,Search,我需要帮助理解Elasticsearch行为,同时在某些文本字段中搜索单词。我有一个文本字段“description”,其映射如下所示: description: { type: "text" analyzer: "lower_ascii" fielddata: true } 'query': { 'span_near': { 'clauses': { {'span_term': {'descrip
description: {
type: "text"
analyzer: "lower_ascii"
fielddata: true
}
'query': {
'span_near': {
'clauses': {
{'span_term': {'description' => 'aaa'}},
{'span_term': {'description' => 'zzz'}}
},
"slop": 50,
"in_order": FALSE
}
}
具有以下设置:
lower_ascii: {
filter: [
"lowercase",
"asciifolding"
],
type: "custom"
tokenizer: "standard"
}
因此,它由标准标记器标记,并修改为较低的ascii。
如果该字段包含文本,例如“XXX YYY”,则会创建类似“aaa”、“XXX”、“YYY”、“zzz”的标记。
然后,如果我想搜索字段中包含所有单词“aaa zzz”的文档,它不适用于匹配或匹配阶段查询。因此,我发现span\u near查询似乎工作正常,但它没有对搜索值应用较低的ascii分析器。
我的查询如下所示:
description: {
type: "text"
analyzer: "lower_ascii"
fielddata: true
}
'query': {
'span_near': {
'clauses': {
{'span_term': {'description' => 'aaa'}},
{'span_term': {'description' => 'zzz'}}
},
"slop": 50,
"in_order": FALSE
}
}
这是我所需要的(如果我理解的话),但如果我试图搜索“ÁŽŽŽ”,结果是空的(aaa zzz效果很好)。有没有一种方法可以在查询中设置lower_ascii analyzer,或者有没有更好的方法可以更好地进行设置?
谢谢。看起来像是
match\u短语
query是您可能想要使用的。它支持可配置的slop
{
"query":
{ "match_phrase": { "description": { "query": "<query>" , slop: <slop>} } }
}
{
“查询”:
{“匹配”短语:{“描述”:{“查询”:“”,slop:}}
}