查询 Elastic Search 时没有匹配项

No matches when querying Elastic Search

我正在尝试 运行 查询弹性搜索。当运行这个查询

GET accounts/_search/
{
  "query": {
   "term": {
     "address_line_1": "1000"
   }
  }
}

我得到了多条记录,例如

    "hits" : [
      {
        "_index" : "accounts",
        "_type" : "_doc",
        "_id" : "...",
        "_score" : 8.355149,
        "_source" : {
          "state_id" : 35,
          "first_name" : "...",
          "last_name" : "...",
          "middle_name" : "P",
          "dob" : "...",
          "status" : "ACTIVE",
          "address_line_1" : "1000 BROADROCK CT",
          "address_line_2" : "",
          "address_city" : "PARMA",
          "address_zip" : "",
          "address_zip_plus_4" : ""
        }
      },

但是,当我尝试将其扩展为包括更多如下所示的内容时,我没有得到任何匹配项

GET accounts/_search/
{
  "query": {
   "term": {
     "address_line_1": "1000 B"
   }
  }
}

响应是

{
  "took" : 0,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 0,
      "relation" : "eq"
    },
    "max_score" : null,
    "hits" : [ ]
  }
}

term 查询正在寻找完全匹配。您的 address_line_* 字段很可能使用标准分析器编制了索引,其中 lowercase-s 所有字母反过来会阻止查询匹配。

所以要么使用

GET accounts/_search/
{
  "query": {
   "match": {                <--
     "address_line_1": "1000 B"
   }
  }
}

关于 B 是 lower/upper 大小写的 'care' 或调整您的 field analyzers 以保留大写。