Elasticsearch NEST创建不区分大小写的索引

时间:2018-02-14 13:24:21

标签: c# elasticsearch nest elasticsearch-5

如何在NEST中创建一个索引,它将不区分大小写的术语与TermQuery进行比较?

我尝试了以下(以及许多类似方法),但我的TermQuery仅返回区分大小写的匹配结果。

Client.CreateIndex("my_index", (c) => c
    .Settings(s => s
        .Analysis(an => an
            .Analyzers(ans => ans
                .Custom("analyzer_keyword", cu => cu
                    .Tokenizer("keyword")
                    .Filters("lowercase")
                 )
                .Custom("analyzer_term", cu => cu
                    .Tokenizer("term")
                    .Filters("lowercase")
                 )
            )
        )
    )
);

1 个答案:

答案 0 :(得分:1)

我不知道如何用NEST做这件事,但我知道一件事 - 你有两个选择:

  1. 您可以指定default analyzer
    1. 您需要使用您的analyzer_keywordanalyzer_term作为文档的字段。
    2. 因为您的代码现在只指定了一些不在任何地方使用的自定义分析器。

      看看specifying an index time analyzer

        

      在索引时,如果未指定analyzer,则会在名为default的索引设置中查找分析器。如果失败,则默认使用standard分析器。

      specifying a search time analyzer

        

      用于搜索特定字段的分析器通过查找:

      来确定      
          
      • 查询本身中指定的analyzer
      •   
      • search_analyzer映射参数。
      •   
      • analyzer映射参数。
      •   
      • 索引设置中名为default_search的分析器。
      •   
      • 索引设置中名为default的分析器。
      •   
      • standard分析器。
      •