elasticsearch 按一个字母搜索,elasticsearch,elasticsearch" /> elasticsearch 按一个字母搜索,elasticsearch,elasticsearch" />

elasticsearch 按一个字母搜索

elasticsearch 按一个字母搜索,elasticsearch,elasticsearch,我有一个如下设置的索引: settings: { index.analysis.analyzer.eng_search_analyzer.filter.0: lowercase index.analysis.analyzer.eng_search_analyzer.filter.1: icu_folding index.analysis.analyzer.eng_search_analyzer.char_filter.0: html_strip index.analysis.filter.eng

我有一个如下设置的索引:

settings: {
index.analysis.analyzer.eng_search_analyzer.filter.0: lowercase
index.analysis.analyzer.eng_search_analyzer.filter.1: icu_folding
index.analysis.analyzer.eng_search_analyzer.char_filter.0: html_strip
index.analysis.filter.eng_ngram_filter.type: nGram
index.analysis.filter.eng_ngram_filter.min_gram: 1
index.analysis.analyzer.eng_search_analyzer.tokenizer: whitespace
index.analysis.analyzer.eng_search_analyzer.filter.2: icu_normalizer
index.analysis.analyzer.eng_index_analyzer.filter.1: eng_ngram_filter
index.analysis.analyzer.eng_index_analyzer.filter.0: lowercase
index.number_of_shards: 2
index.analysis.filter.eng_ngram_filter.token_chars.1: digit
index.analysis.filter.eng_ngram_filter.token_chars.0: letter
index.analysis.filter.eng_ngram_filter.token_chars.3: symbol
index.analysis.filter.eng_ngram_filter.token_chars.2: punctuation
index.analysis.analyzer.eng_index_analyzer.type: custom
index.analysis.analyzer.eng_index_analyzer.char_filter.0: html_strip
index.analysis.analyzer.eng_index_analyzer.filter.3: icu_normalizer
index.analysis.filter.eng_ngram_filter.max_gram: 20
index.analysis.analyzer.eng_index_analyzer.filter.2: icu_folding
index.number_of_replicas: 1
index.analysis.analyzer.eng_index_analyzer.tokenizer: whitespace
index.analysis.analyzer.eng_search_analyzer.type: custom
index.version.created: 900799
index.uuid: -O-iV6ZIQh6gk1204Ec1ig
}
{
  "name": {
    "type": "multi_field",
    "fields": {
      "name": {
        "type": "string",
        "index": "not_analyzed",
        "omit_norms": "true",
        "index_options": "docs",
        "null_value": ""
      },
      "analyzed": {
        "type": "string",
        "index_analyzer": "eng_index_analyzer",
        "search_analyzer": "eng_search_analyzer",
        "null_value": "",
        "include_in_all": "false"
      }
    }
  }
}
几个重要字段的字段映射设置如下:

settings: {
index.analysis.analyzer.eng_search_analyzer.filter.0: lowercase
index.analysis.analyzer.eng_search_analyzer.filter.1: icu_folding
index.analysis.analyzer.eng_search_analyzer.char_filter.0: html_strip
index.analysis.filter.eng_ngram_filter.type: nGram
index.analysis.filter.eng_ngram_filter.min_gram: 1
index.analysis.analyzer.eng_search_analyzer.tokenizer: whitespace
index.analysis.analyzer.eng_search_analyzer.filter.2: icu_normalizer
index.analysis.analyzer.eng_index_analyzer.filter.1: eng_ngram_filter
index.analysis.analyzer.eng_index_analyzer.filter.0: lowercase
index.number_of_shards: 2
index.analysis.filter.eng_ngram_filter.token_chars.1: digit
index.analysis.filter.eng_ngram_filter.token_chars.0: letter
index.analysis.filter.eng_ngram_filter.token_chars.3: symbol
index.analysis.filter.eng_ngram_filter.token_chars.2: punctuation
index.analysis.analyzer.eng_index_analyzer.type: custom
index.analysis.analyzer.eng_index_analyzer.char_filter.0: html_strip
index.analysis.analyzer.eng_index_analyzer.filter.3: icu_normalizer
index.analysis.filter.eng_ngram_filter.max_gram: 20
index.analysis.analyzer.eng_index_analyzer.filter.2: icu_folding
index.number_of_replicas: 1
index.analysis.analyzer.eng_index_analyzer.tokenizer: whitespace
index.analysis.analyzer.eng_search_analyzer.type: custom
index.version.created: 900799
index.uuid: -O-iV6ZIQh6gk1204Ec1ig
}
{
  "name": {
    "type": "multi_field",
    "fields": {
      "name": {
        "type": "string",
        "index": "not_analyzed",
        "omit_norms": "true",
        "index_options": "docs",
        "null_value": ""
      },
      "analyzed": {
        "type": "string",
        "index_analyzer": "eng_index_analyzer",
        "search_analyzer": "eng_search_analyzer",
        "null_value": "",
        "include_in_all": "false"
      }
    }
  }
}
当我查询name.analysisted字段时,它适用于至少包含两个字符的任何内容。例如,查询“Ra”将在名称字段中找到带有“Rafael”的文档。然而,当我查询“R”或“Rafael S”时,它不会返回任何结果。应该注意的是,在我们的查询中,空格被处理为“AND”操作符,而不是“OR”,因此基本上查询词被处理为“name contains[search term]”


如何配置字段或分析器,以便搜索单个字母可以正常工作?

很难说没有看到查询,但根据a,如果使用查询,可以通过增加查询的“max\u expansions”属性获得一些成功,尽管这会降低速度

“最大扩展数”:10000

该线程中的另一个潜在解决方案是将
操作符
默认操作符
设置为
”和“
(我认为您已经完成了)