es中字段A 值是一个list [a, b, c, d],当入参为[a, b, c, d, e] 或 [a, b, c, d] 就可以匹配到;如果是 [a, b, c] 就匹配不到。
{
"query": {
"bool": {
"filter": [{
"script": {
"script": {
"source": """
List<Integer> fieldAValues = Arrays.asList(doc['field_a'].values());
List<Integer> searchValues = Arrays.asList(params.searchValues);
return searchValues.stream().allMatch(fieldAValues::contains);
""",
"lang": "painless",
"params": {
"searchValues": [a, b, c, d]
}
}
}
}]
}
}
}
该方法比较耗cpu。
其他类似方法: