我有匹配查询搜索某种类型的文档:
{
"query": {
"bool": {
"should": {
"match": {
"ph1_enc": "EAAQnb1kMr/e2/ADqo"
}
}
}
}
}
" EAAQnb1kMr / E2 / ADqo"是我想要匹配的字符串,但是在搜索结果中我可以看到多个记录,其中包含子字符串" / e2 /"也退还了。 看起来像" / e2 /"是单独索引,这样就可以发生。我认为匹配查询是进行全文匹配...是因为我在创建模板时遗漏了什么?有什么想法吗?
加载项而不是reindex,如何修改查询以匹配查询中的确切值?
答案 0 :(得分:0)
您在映射中设置哪个分析器来索引数据?
如果您使用的是默认分析符(标准分析器),那么根据文档,这会使用似乎用斜杠('/')分割文本的default tokenizer。文档重定向here以获取有关标记生成器的更多信息。
因此,这将索引以下单词'EAAQnb1kMr','e2'和'ADqo'。因此,您的查询值也将按照索引字段的方式进行分析。这就是为什么带有'e2'的文件也被退回的原因。
如果您不需要对'ph1_enc'字段进行标记,则只需在映射中将其类型设置为'keyword'即可。
"properties": {
"ph1_enc": {
"type": "keyword"
}
}
这不会分析字段,它会在您查询时完全匹配。
我希望它有所帮助。