elasticsearch - 可以对所有其元素必须满足某些条件的数组字段进行ElasticSearch查询

标签 elasticsearch elasticsearch-query

我正在使用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/

相关文章:

c# - Elasticsearch按日期查询返回错误结果

elasticsearch - Logstash无法创建单独的索引

data-structures - Lucene (Solr/ElasticSearch) 是如何快速进行过滤词条计数的?

elasticsearch - 嵌套文档上的ElasticSearch查询过滤器

elasticsearch - Elasticsearch日期查询。在某个月出生的人

elasticsearch - 适用于英国邮政编码的Elasticsearch映射,能够处理间距和大小写

amazon-web-services - 无法关闭 AWS 上的 ElasticSearch 索引?

elasticsearch - Elasticsearch : Can only use prefix queries on keyword and text fields - not on [isXyz] which is of type [boolean]

ElasticSearch 映射折叠/对分组文档执行操作的结果

elasticsearch - 通配符查询 Elasticsearch 不适用于多词值