Elasticsearch不适用于字母数字

x33g5p2x  于 2022-11-22  发布在  ElasticSearch
关注(0)|答案(1)|浏览(102)

我有字母数字代码,如AA111, 111AA, AA-111, AAAA, 1111

"name" : {
      "type" : "text",
      "analyzer" : "standard",
      "fields" : {
        "lower_case_sort" : {
          "type" : "keyword",
          "normalizer" : "lowercase"
        }
      },
      "copy_to" : "default"
    }

默认Map如下所示

"default" : {
  "type" : "text",
  "analyzer" : "index_ngram",
  "search_analyzer" : "search_ngram"
},

当我们用AAAAA搜索时,它返回结果。但是当我们用111搜索时,它不返回任何结果。
下面是查询

"bool" : {
            "filter" : [
              {
                "match" : {
                  "default" : {
                    "query" : "111",
                    "operator" : "AND",
                    "prefix_length" : 0,
                    "max_expansions" : 50,
                    "fuzzy_transpositions" : true,
                    "lenient" : false,
                    "zero_terms_query" : "NONE",
                    "auto_generate_synonyms_phrase_query" : true,
                    "boost" : 1.0
                  }
                }
              },
8ljdwjyq

8ljdwjyq1#

当你在你的default字段上使用一些分析器时,它会从你的文本中删除数字(简单的分析器就是其中之一),你需要使用一个不像edge-ngram那样删除数字的标记器来搜索它们,或者使用standard分析器,它也可以处理数字。

相关问题