获取满足多个条件的特定数量的文档 - Elasticsearch

时间:2018-06-12 11:59:43

标签: elasticsearch

我有一个关于水果信息的Elasticsearch索引,如下所示

GET fruits/fruits_data/_search

[{ id: 1,
   name: apple},
 { id: 2,
   name: mango},
 { id: 3,
   name: apple},
 { id: 4,
   name: banana},
 { id: 5,
   name: apple},
 { id: 6,
   name: mango},
 { id: 7,
   name: pineapple},
 { id: 8,
   name: jackfruit}]

现在我需要根据优先级(下面)获取7个水果:

{"apple": 3, "banana": 3, "mango": 2, "guava": 2, "pineapple": 1, "jackfruit": 1}

此处key表示要提取的水果,value表示要提取的文档的最大数量。 这意味着我需要获取最大3 apple, 3 banana and 1 mango并且当我需要数量的水果时,我可以忽略优先级哈希中的其他人。但是我的ES索引中只有1 banana所以我需要获取最大值3 apple, 1 banana, 2 mango and 1 pineapple(因为guava不存在于索引中我们需要忽略它。 有没有办法在单个查询中在ES中获取这样的水果。我不想使用多个查询。 感谢

1 个答案:

答案 0 :(得分:1)

无法直接获取结果,请尝试在Elasticsearch中使用Aggregation。您可以参考下面的链接, [https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations.html]