假设我有一个包含Elasticsearch文档中的字符串的数组字段。让其中一个文档中的数组为
mArray1: ["string1", "string2", "string3", "string4"]
mArray2: ["string1", "string7", "string11"]
我想要一个查询来搜索同时具有"string1"one_answers"string2",即它应该返回mArray1。这是我使用的使用OR过滤。我还匹配了另一个字段,应该是强制性的
query: {
bool: {
filter: [
{
range: {
"math.score": {
gte: 80
}
}
},
{
multi_match: {
query: "name1",
fields: ["name", "full_name"],
type: "phrase_prefix"
}
}
],
must: [
{
terms: {
"arrayField": ["string1", "string2"]
}
}
]
}
}
terms
匹配任何指定的值,您想要匹配具有string1
和string2
的文档,那么您需要在must
中进行两个term
查询:
"must" : [
{
"term" : {
"arrayField" : "string1"
}
},
{
"term" : {
"arrayField" : "string2"
}
}
]