elasticsearch 数组字段的elasticsearch范围过滤器,elasticsearch,filter,range,elasticsearch,Filter,Range" /> elasticsearch 数组字段的elasticsearch范围过滤器,elasticsearch,filter,range,elasticsearch,Filter,Range" />

elasticsearch 数组字段的elasticsearch范围过滤器

elasticsearch 数组字段的elasticsearch范围过滤器,elasticsearch,filter,range,elasticsearch,Filter,Range,我有一个包含整数数组的字段,例如: _source: { ... prices: [ 20001, 30001 ] } 我希望过滤结果,使prices至少包含一个介于以下值之间的值列表: [2000230000]不会返回上述文档,因为没有值介于20002和30000之间 但是[1000020002]将返回上述文档,因为上述文档的prices字段中的20001介于10000和20002之间Elasticsearch始终认为字段可以包含值列表,因此,a应该可以工作。如果

我有一个包含整数数组的字段,例如:

_source: {
  ...
  prices: [
    20001,
    30001
  ]
}
我希望过滤结果,使prices至少包含一个介于以下值之间的值列表:
[2000230000]
不会返回上述文档,因为没有值介于20002和30000之间
但是
[1000020002]
将返回上述文档,因为上述文档的prices字段中的20001介于10000和20002之间Elasticsearch始终认为字段可以包含值列表,因此,a应该可以工作。如果任何值与该范围匹配,则将在其中进行筛选

您可以将该过滤器用作以下内容的一部分:

但是,过滤查询在2.0中是不推荐使用的,因此,如果您使用2.0,则可以更好地将过滤查询与过滤器一起使用:

{
  "query": {
    "bool": {
      "must": {
        "match_all": {}   
      },  
      "filter": {
        "range": {
          "prices": {
            "gte": 10000,
            "lte": 20002
          }
        }
      }
    }
  }
}

请注意,我在示例中使用了过滤器,因为您要求使用过滤器:)

谢谢您的回答,它正确地解决了我的问题。完成!这是我第一次在这里提问:)我犯了把整数转换成字符串的错误。。。。。最好让他们保持现状
{
  "query": {
    "bool": {
      "must": {
        "match_all": {}   
      },  
      "filter": {
        "range": {
          "prices": {
            "gte": 10000,
            "lte": 20002
          }
        }
      }
    }
  }
}