【问题标题】:Search text in elastic search ignoring uppercase and lowercase alphabet在弹性搜索中搜索文本,忽略大写和小写字母
【发布时间】:2017-10-11 16:42:37
【问题描述】:

首先,我是弹性搜索的新手。我有字段skillName:"Android Sdk"。我在弹性搜索中将此字段映射为keyword。但问题是,当我搜索类似

POST _search
 {
 "query": {
 "match" : { "skillName" : "Android sdk" } 
 }
}

sdk 在搜索查询中很小。它没有给我任何结果。当字段映射为关键字时,我如何搜索忽略文本的小写或大写

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    要在关键字字段上搜索不区分大小写的字段,您需要使用在 5.2.0 中引入的 normalizer。示例见here

    【讨论】:

      【解决方案2】:

      是的,它忽略了与原始情况不同的情况,因为您使用了keyword 分析器,它没有对令牌做任何事情,而是保持原样。在您的情况下,仅当您查询确切的 same 令牌

      时才会进行匹配

      因此,我建议更改此行为并至少应用lowercase 令牌过滤器,这样您就可以匹配具有不同寄存器的术语。

      【讨论】:

        【解决方案3】:

        您可以将不同的分析器应用于同一个“字段”,并有一个用于全文搜索,另一个用于排序、聚合。

        【讨论】:

          【解决方案4】:

          尝试以下方法:

          {
            "query": {
              "query_string": {
                "fields": [
                  "skillName"
                ],
                "query": "Android sdk"
              }
            }
          }
          
          猜你喜欢
          • 2017-02-25
          • 1970-01-01
          • 1970-01-01
          • 2013-04-11
          • 1970-01-01
          • 1970-01-01
          • 2016-08-03
          • 2017-02-21
          • 1970-01-01
          相关资源
          最近更新 更多