Elasticsearch外部文档“术语”搜索查询不起作用

时间:2015-05-07 17:25:22

标签: elasticsearch

我正在尝试使用其他索引上的文档作为搜索字符串的来源进行“术语”查询。但是我没有受到任何打击。

- 索引id为2的用户的信息,特别是其关注者

curl -XPUT localhost:9200/users/user/2 -d '{
   "followers" : ["1", "3"]
}'

- 从id为2的用户索引推文

curl -XPUT localhost:9200/tweets/tweet/1 -d '{
   "user" : "2"
}'

- 搜索与用户2的关注者匹配的所有推文

curl -XGET localhost:9200/tweets/_search -d '{
  "query" : {
    "filtered" : {
      "filter" : {
        "terms" : {
          "user" : {
            "index" : "users",
            "type" : "user",
            "id" : "2",
            "path" : "followers"
          },
          "_cache_key" : "user_2_friends"
        }
      }
    }
  }
}'

结果:0次点击。

但是,如果我将查询更改为:

{
  "query" : {
    "filtered" : {
      "filter" : {
        "terms" : {
          "user" : [2]
        }
      }
    }
  }
}'

上面的查询给我1次点击,这意味着外部搜索查询存在一些问题。

详细说明: http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-terms-filter.html

我正在使用ES版本:1.5.2也在1.4中尝试了查询。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

查询:

{
  "query" : {
    "filtered" : {
      "filter" : {
        "terms" : {
          "user" : [1,3]
        }
      }
    }
  }
}'

相同
{
  "query" : {
    "filtered" : {
      "filter" : {
        "terms" : {
          "user" : {
            "index" : "users",
            "type" : "user",
            "id" : "2",
            "path" : "followers"
          },
          "_cache_key" : "user_2_friends"
        }
      }
    }
  }
}

而不是OP中的那个。 您可能没有为用户1和3索引推文。