字词查询返回0个结果elasticsearch

时间:2019-05-13 05:23:34

标签: elasticsearch

我有以下文件:

        {
            "_index": "testrest",
            "_type": "testrest",
            "_id": "sadfasdfw1",
            "_score": 1,
            "_source": {,
                "s_item_name": "Create",
                "request_id": "35",
                "Result": "Match",
            }
        },

我正在尝试获取term字段中的MatchResultrequest_id的{​​{1}}的记录。

这是我的查询:

35

但是我得到{ "query": { "bool": { "must": [ { "term": { "Result": "Match" }} ], "filter": { "term": { "request_id": "35" } } } } } 的结果。

0代替term会给我带来结果。

1 个答案:

答案 0 :(得分:1)

这是因为Resulttext字段,因此将对其进行分析,并将值索引为match而不是Match

通常,您应该not use a term query,但最好使用match查询。就您而言,这将解决问题。

如果您绝对要使用term查询并有一个名为Result.keyword的字段,那么您也可以这样做。

所以回顾一下:

{
  "query": { 
    "bool": { 
      "must": [ 
        { "match":  { "Result": "Match" }}         <-- use match query
      ],
      "filter": {
        "term": {
            "request_id": "35"
        }
      }
    }
  }
}

{
  "query": { 
    "bool": { 
      "must": [ 
        { "term":  { "Result.keyword": "Match" }}  <-- use term query on keyword field
      ],
      "filter": {
        "term": {
            "request_id": "35"
        }
      }
    }
  }
}