【问题标题】:Elasticsearch external document "terms" search query not workingElasticsearch 外部文档“术语”搜索查询不起作用
【发布时间】:2015-05-07 17:25:21
【问题描述】:

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

-- 索引 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的查询。

有什么建议吗?

【问题讨论】:

    标签: elasticsearch


    【解决方案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 编制推文索引。

    【讨论】:

    • 感谢您的回复,现在看起来很明显。我盲目地相信 elastic.co 上记录的示例
    猜你喜欢
    • 2018-11-09
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多