代码之家  ›  专栏  ›  技术社区  ›  Antarr Byrd

查询弹性搜索时没有匹配项

  •  0
  • Antarr Byrd  · 技术社区  · 5 年前

    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" : [ ]
      }
    }
    
    1 回复  |  直到 5 年前
        1
  •  1
  •   Jozef - Spatialized.io    5 年前

    这个 term address_line_* 字段很可能是用标准分析器编制索引的,标准分析器将所有字母小写,这反过来又阻止了查询的匹配。

    所以要么用

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

    field analyzers 以保持资本化。