如何使用ElasticSearch中的另一个查询过滤查询

时间:2016-05-31 14:42:47

标签: elasticsearch filter

鉴于以下示例用户和产品文档:

{
  "_id": "1",
  "_type": "user",
  "_source": {
    "id": "1",
    "following": ["2", "3", ... , "10000"]
}

{
  "_id": "1",
  "_type": "product",
  "_source": {
    "id": "1",
    "owner_id": "2"
}

{
  "_id": "2",
  "_type": "product",
  "_source": {
    "id": "2",
    "owner_id": "10001"
}

我想获取属于id = 1的用户所属的用户的产品。我不想做两个不同的查询(首先是让用户跟随用户id = 1,然后是第二个用于获取产品),因为用户id = 1跟随~10000个用户。

有没有办法只使用一个查询获得结果?

1 个答案:

答案 0 :(得分:0)

我认为您正在寻找terms查询: https://www.elastic.co/guide/en/elasticsearch/reference/5.5/query-dsl-terms-query.html

查看他们的文档,他们的示例与您的案例非常相似:

GET /product/_search
{
  "query" : {
    "terms" : {
      "owner_id": {
         "index": "<your_index>",
         "type": "user",
         "id": "1",
         "path": "following"
      }
    }
  }
}