我有一个包含整数数组的字段,例如:
_source: { ... prices: [ 20001, 30001 ] }
我想过滤结果,以使价格至少包含介于以下之间的值列表之一: 由于价格字段中的`[20002,30000]
值不在20002至30000之间,因此将不返回上述文档,但
Elasticsearch始终认为字段可以包含值列表,因此,范围过滤器应该起作用。如果任何值与范围匹配,它将被过滤。
您可以将该过滤器用作过滤查询的一部分:
{ "query": { "filtered": { "filter": { "range": { "prices": { "gte": 10000, "lte": 20002 } } } } } }
但是,过滤查询在2.0中已弃用,因此,如果您使用的是2.0,则最好将布尔查询与过滤器配合使用:
{ "query": { "bool": { "must": { "match_all": {} }, "filter": { "range": { "prices": { "gte": 10000, "lte": 20002 } } } } } }
请注意,我在示例中使用了过滤器,因为您需要过滤器:)