elasticsearch,nest,C#,elasticsearch,Nest" /> elasticsearch,nest,C#,elasticsearch,Nest" />

C# Elasticsearch NEST 5.x Koelner拼音不匹配

C# Elasticsearch NEST 5.x Koelner拼音不匹配,c#,elasticsearch,nest,C#,elasticsearch,Nest,更新 我改变了问题的思路 我正在尝试用koelner语音学进行语音搜索,并且使用了ngram 我正在使用的索引配置: { "testnew": { "settings": { "index": { "number_of_shards": "5", "provided_name": "testnew", "creation_date": "1489672932033", "analysis": {

更新 我改变了问题的思路

我正在尝试用koelner语音学进行语音搜索,并且使用了ngram

我正在使用的索引配置:

    {
  "testnew": {
    "settings": {
      "index": {
        "number_of_shards": "5",
        "provided_name": "testnew",
        "creation_date": "1489672932033",
        "analysis": {
          "filter": {
            "koelnerPhonetik": {
              "replace": "false",
              "type": "phonetic",
              "encoder": "koelnerphonetik"
            }
          },
          "analyzer": {
            "koelnerPhonetik": {
              "type": "custom",
              "tokenizer": "koelnerPhonetik"
            },
            "ngram_analyzer": {
              "type": "custom",
              "tokenizer": "ngram_tokenizer"
            }
          },
          "tokenizer": {
            "koelnerPhonetik": {
              "type": "standard"
            },
            "ngram_tokenizer": {
              "token_chars": [
                "letter",
                "digit",
                "punctuation",
                "symbol"
              ],
              "min_gram": "2",
              "type": "ngram",
              "max_gram": "20"
            }
          }
        },
          ...
        }
      }
    }
  }
}
我有一份文件是这样的:

{
    "_index": "testnew",
    "_type": "person",
    "_id": "3",
    "_score": 1,
    "_source": {
      "name": "Can",
      "fields": {
        "phonetic": {
          "type": "string",
          "analyzer": "koelnerPhonetik"
        }
      }
    }
GET testnew/person/_mapping
          "name": {
            "type": "text",
            "analyzer": "koelnerPhonetik"
          }
它是这样映射的:

{
    "_index": "testnew",
    "_type": "person",
    "_id": "3",
    "_score": 1,
    "_source": {
      "name": "Can",
      "fields": {
        "phonetic": {
          "type": "string",
          "analyzer": "koelnerPhonetik"
        }
      }
    }
GET testnew/person/_mapping
          "name": {
            "type": "text",
            "analyzer": "koelnerPhonetik"
          }
为什么在此查询中搜索“Kan”无法找到“Can”

GET testnew/person/_search
      {
      "query": {
        "match": {
          "name.phonetic": {
            "query": "Kan"
          }
        }
      }
    }

您的字段名为
name
not
name.keyword
@Val这不会产生任何结果,不确定为什么要删除
.keyword
,因为分析器只处理您的
name
字段,而不是
name.keyword
(未按定义进行分析)@OHMR您的文档源与映射不匹配。映射不包含带有
koelnerPhonetik
分析的
name.peophonic
子字段的
multi_字段。从文档中删除
字段:{…}
,并将其添加到
名称
字段下的映射中。