我的ES索引包含以下文档:
[{"type": "alpha", "order": ['john', 'michael', 'tony']}]
[{"type": "alpha", "order": ['michael', 'john', 'tony']}]
[{"type": "beta", "order": ['michael', 'john', 'tony']}]
我的查询需要返回一个记录,其中“type”是“alpha”,其中“john”位于“order”列表的第二个位置。我一直在尝试使用嵌套查询,但似乎无法将其与“类型”的顶级条件相结合。任何提示欢迎。
答案 0 :(得分:1)
这不能用您当前的映射完成。
你必须像这样塑造你的数据:
[{"type": "alpha", "order": {"1":"john", "2":"michael", "3":"tony"]}]
或者像这样:
[{"type": "alpha", "order": [{"rank":1,"name":"john"}, {"rank":2,"name":"michael"}, {"rank":3, "name":"tony"}]}]
第二个解决方案需要嵌套" order"和嵌套查询,效率较低,但如果您收到大量订单,这可能是一个更好的解决方案,以防止mapping explosion。