有没有办法匹配文档数组中的所有值?例如。如果我的搜索数组是["1","2","3","4","5"]
而我的文档有
doc1:"arr":["1","3","5"]
doc2:"arr":["1","2","7","9"]
doc3:"arr":["1","8"]
然后只有第一个文档应该匹配,因为文档中的所有值都存在于搜索数组中。我尝试使用脚本过滤器(以获取数组的长度)并尝试使用minimum_should_match
参数,但我无法使其工作。如何将脚本创建的变量用作minimum_should_match
的参数?
答案 0 :(得分:0)
无法直接搜索数组来检查是否包含。因为 分析器 会分析搜索键并匹配它,如果有任何匹配的键,它将返回结果。
如果要匹配数组是否包含指定的数组,需要将搜索到的数组拆分为多个术语,如:
{
"query": {
"filtered": {
"filter": {
"bool": {
"must": [{
"term": {
"number": 1
}
}, {
"term": {
"number": 2
}
}, {
"term": {
"number": 7
}
}, {
"term": {
"number": 9
}
}]
}
}
}
}
}