【问题标题】:C# Nest ElasticSearch Not able to map "token_chars" to Nest fluentMappingC# Nest ElasticSearch 无法将“token_chars”映射到 Nest fluentMapping
【发布时间】:2014-04-30 10:17:29
【问题描述】:

我通过 ElasticSearch Sense 浏览器插件创建了下面的索引,还创建了 C# Nest Fluent Mapping。除了 nGrams 过滤器上的“token_chars”之外,我可以在 Nest 中表达所有内容。我没有在 C# 嵌套上获得强类型属性来添加“token_chars”。有人遇到过同样的问题吗?

json 和 c# 设置如下所示。 请帮忙

        "analysis": {
           "analyzer": {
              "str_index_analyzer": {
                 "filter": [
                    "lowercase",
                    "substring"
                 ],
                 "tokenizer": "keyword"
              },
           "filter": {
              "substring": {
                 "max_gram": "50",
                 "type": "nGram",
                 "min_gram": "2",
                 "token_chars": [ /*Not able to map */
                    "letter",
                    "digit"
                 ]
              }
           }

我没有在 C# 嵌套上获得强类型属性来添加“token_chars”。有人遇到同样的问题吗?

           var result = this._client.CreateIndex("mkfindex1", c => c
           .Analysis(a => a.Analyzers(an => an.Add("str_index_analyzer", new CustomAnalyzer()
            {
                Filter = new string[] { "lowercase", "substring" },
                Tokenizer = "keyword"
            })).TokenFilters(bases => bases.Add("substring", new NgramTokenFilter()
            {
                MaxGram = 50,
                MinGram = 2,

                /*"token_chars": [//Not able to map
                    "letter",
                    "digit"
                 */
             }))));

【问题讨论】:

标签: elasticsearch nest


【解决方案1】:

我遇到了同样的问题。解决方法是不使用 Fluent 映射,而只需通过 Settings.Add() 方法将您的分析设置直接指定为 Fluent Dictionary 条目。下面是一个应该正确配置索引的示例。

 var result = this._client.CreateIndex("mkfindex1", c => c
     .Settings.Add("analysis.analyzer", "str_index_analyzer")
     .Settings.add("analysis.analyzer.str_index_analyzer.type", "custom")
     .Settings.add("analysis.analyzer.str_index_analyzer.tokenizer", "keyword")
     .Settings.Add("analysis.analyzer.str_index_analyzer.filter.0", "lowercase")
     .Settings.Add("analysis.analyzer.str_index_analyzer.filter.1", "substring")
     .Settings.add("analysis.filter.substring.type", "nGram")
     .Settings.add("analysis.filter.substring.min_gram", "2")
     .Settings.add("analysis.filter.substring.max_gram", "50")
     .Settings.add("analysis.filter.substring.token_chars.0", "letter")
     .Settings.add("analysis.filter.substring.token_chars.0", "digit")
   );

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-29
    • 1970-01-01
    • 2015-03-29
    • 1970-01-01
    • 1970-01-01
    • 2016-10-30
    • 2015-12-01
    相关资源
    最近更新 更多