我们有关于具有以下键值对的汽车库存的ES文件:
{
"stockid":1,
"car": "bmw"
"dealerid": "d1"
},
{
"stockid":2,
"car": "audi"
"dealerid": "d1"
},,
{
"stockid":3,
"car": "mercedes"
"dealerid": "d1"
},,
{
"stockid":4,
"car": "bentley"
"dealerid": "d2"
},
{
"stockid":5,
"car": "range rover"
"dealerid": "d1"
}
有上千种这样的文件。该文档包含更多字段,我刚刚过度简化它并仅指定必要的字段来理解查询。
我们想根据dealerid随机选择'N'股票。例如,如果有人查询上述股票文件,尽管交易商“d1”有4只股票而且“d2”只有1只股票有数千种,因此获得“d1”或“d2”股票的概率相等。经销商也从“d1”到“dXXXX”这个名单不断变化。
有人可以帮我写这个弹性查询吗?
答案 0 :(得分:0)
您是否愿意重组索引?您可以使用Parent Child方法。 dealers
是父母,stocks
是孩子,然后您可以轻松使用随机种子查询经销商或每个经销商的股票,因为文档将是唯一的。
能够通过查询stocks
个孩子来复制当前查询,因为您仍然可以使用has_parent
(或{{}以非规范化方式访问父字段{1}}相反的方向)
PUT / cars
has_child
GET / cars / dealers / _search
{
"mappings" : {
"dealers" : { },
"stocks" : {
"_parent" : {
"type" : "dealers"
}
}
}
}