elasticsearch中有一个文本字段,其中包含以空格分隔的数字列表。
例如:
doc1 : "user_ids" : "10",
doc2 : "user_ids" : "10"
doc3 : "user_ids" : "10 20",
doc4 : "user_ids" : "20 10",
doc5 : "user_ids" : "20 10 30",
doc6 : "user_ids" : "40"
对于给定的user_ids中的术语10,我必须得到另一个术语。对于上述数据,结果将为20和30,因为在doc3中,其他项10为20,而在doc5中,其他项10为20和30
我可以通过以下方式做到这一点:
首先获取所有具有术语10的user_id:
"query": {
"term": {
"user_ids": "10"
}
}
然后提取其他术语
问题是性能问题,如果我有很多只包含10的user_id,那么我将不必要地扫描所有没有其他条件的结果。
有什么方法可以对此进行优化?