【发布时间】:2020-01-20 22:54:34
【问题描述】:
我们的要求是通过向 elasticsearch 提供输入数组来按数据的数组字段过滤对象。任何组合输入数组元素都与 mentions 数组匹配。
小例子
data:[
{"name": "xxxx", "mentions": ["X", "Y"]},
{"name": "yyyy", "mentions": ["K", "L", "M"]},
{"name": "zzz", "mentions": ["X", "L"]},
]
Input: [X, Y, K, L]
Output:[
{"name": "xxxx", "mentions": ["X", "Y"]},
{"name": "zzz", "mentions": ["X", "L"]}
]
必须根据mentions字段过滤对象,其中mentions数组的每个成员必须在给定的输入数组中,如果有任何不一致,则忽略该对象。 Terms 查询或带有 must 字段的 bool 不能解决我们的问题。
【问题讨论】:
-
你能分享你的映射吗?如果您可以分享您尝试过的查询,那就太好了。据我了解,您想要在提及字段中包含
X Y K L的所有文档,对吗? -
@OpsterESNinja-Kamal 'X Y K L' 不是强制性的,但是,在提及数组(例如 X Y 或 X L)中,X Y K L 的任何组合都可以,如输出所示。映射与数据数组相同。
标签: elasticsearch elastic-stack