我想在文档中的多个字段中找到一个确切的短语(例如,"快速的棕色狐狸")。
现在,我正在使用这样的东西:
{
"query": {
"filtered": {
"query": {
"multi_match": {
"fields": [
"subject",
"comments"
],
"query": "the quick brown fox"
}
},
"filters": {
"and": [
{
"term": {
"priority": "high"
}
}
...more ands
]
}
}
}
}
问题是,我该怎样才能正确地做到这一点。现在我首先得到最佳匹配,这往往是整个短语,但我也得到了几乎匹配的负载。
答案 0 :(得分:2)
如果您使用版本为> = 1.1.0的ElasticSearch集群,则可以将multi-match
查询的模式设置为phrase
:
...
"query": {
"multi_match": {
"fields": [
"subject",
"comments"
],
"query": "the quick brown fox",
"type": "phrase"
}
...
它将替换为match_phrase
一个字段生成的匹配查询,该查询将仅返回包含完整短语的文档(您可以在documentation中找到详细信息)
答案 1 :(得分:0)
您是如何分析主题/评论字段的?如果您想要完全匹配,则需要使用关键字tokenizer进行索引/搜索。