ElasticSearch:查询嵌套列表中的特定位置

时间:2017-11-07 08:21:13

标签: json elasticsearch querydsl

我的ES索引包含以下文档:

[{"type": "alpha", "order": ['john', 'michael', 'tony']}]
[{"type": "alpha", "order": ['michael', 'john', 'tony']}]
[{"type": "beta", "order": ['michael', 'john', 'tony']}]

我的查询需要返回一个记录,其中“type”是“alpha”,其中“john”位于“order”列表的第二个位置。我一直在尝试使用嵌套查询,但似乎无法将其与“类型”的顶级条件相结合。任何提示欢迎。

1 个答案:

答案 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