我正在尝试在不同文档字段中使用多个搜索词来限制搜索结果。
例如,我有3个字段field1
,field2
和field3
,还有两个搜索词word1
和word2
。我想让所有文档的任意两个字段分别与这些单词匹配,例如:
field1
匹配word1
,而field3
匹配word2
,或者field2
匹配word1
,而field3
匹配word2
,或者field1
匹配word2
,而field2
匹配word1
,或者我应该如何编写查询?
顺便说一句。我正在使用ElasticSearch 5.x。
答案 0 :(得分:1)
我认为这应该可行:
{
"query": {
"bool": {
"must": [{
"multi_match": {
"query": "word1",
"fields": ["field1", "field2", "field3"]
}
},
{
"multi_match": {
"query": "word2",
"fields": ["field1", "field2", "field3"]
}
}
]
}
}
}
答案 1 :(得分:0)
请阅读文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-bool-query.html
{
"query": {
"bool": {
"should": [
{
"bool": {
"must": [
{"term": {"field1 ": "word1"}},
{"term": {"field3 ": "word2"}}
]
}
},
{
"bool": {
"must": [
{"term": {"field2 ": "word1"}},
{"term": {"field3 ": "word2"}}
]
}
},
{
"bool": {
"must": [
{"term": {"field1 ": "word2"}},
{"term": {"field2 ": "word1"}}
]
}
}
]
}
}
}