AND搜索字符串数组Elasticsearch



假设我有一个包含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匹配任何指定的值,您想要匹配具有string1string2的文档,那么您需要在must中进行两个term查询:

"must" : [
{
"term" : {
"arrayField" : "string1"
}
},
{
"term" : {
"arrayField" : "string2"
}
}
]

相关内容

  • 没有找到相关文章

最新更新