我正在使用ElasticSearch,并且具有如下所示的数字数组字段。
{
income: [200, 300, 400]
}
我需要编写查询以查找其收入的所有要素都大于某个值的文档。
例如,如果条件是
> 250
那么上面的文档不应被选中,因为200小于250。
但是如果条件是
> 150
然后应将文件退回。
最佳答案
您可以通过遍历数组字段并检查所需条件的脚本查询来执行此操作。
在上述情况下,将是queryDsl
GET testample/_search
{
"query": {
"script": {
"script": {
"source": " boolean test = false; for (inc in doc['income']) { if(params.income<=inc) { test=true; } else { test=false; break;} } return test;",
"params": {
"income": 150
}
}
}
}
}
基本上,您可以在脚本部分执行任何代码。上面的查询所做的是,将用户输入作为参数,然后检查它是否小于数组中的所有元素,如果是,则doc评估为true,因此作为查询响应返回。
关于elasticsearch - 可以对所有其元素必须满足某些条件的数组字段进行ElasticSearch查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60089072/