有效地在Elasticsearch中获得其他术语

时间:2018-08-08 10:45:16

标签: elasticsearch

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,那么我将不必要地扫描所有没有其他条件的结果。

有什么方法可以对此进行优化?

0 个答案:

没有答案