我有一个关于水果信息的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中获取这样的水果。我不想使用多个查询。
感谢
答案 0 :(得分:1)
无法直接获取结果,请尝试在Elasticsearch中使用Aggregation
。您可以参考下面的链接,
[https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations.html]