【问题标题】:elasticsearch analyzer - lowercase and whitespace tokenizerelasticsearch 分析器 - 小写和空格标记器
【发布时间】:2015-02-11 19:58:03
【问题描述】:

如何创建一个映射来标记空格上的字符串并将其更改为小写以进行索引?

这是我当前的映射,它通过空格进行标记,但我无法理解如何将其小写并搜索(查询)相同...

{
  "mappings": {
    "my_type" : {
      "properties" : {
        "title" : { "type" : "string", "analyzer" : "whitespace", "tokenizer": "whitespace", "search_analyzer":"whitespace" }
      }
    }
  }
}

请帮忙...

【问题讨论】:

    标签: javascript elasticsearch lucene


    【解决方案1】:

    我设法编写了一个自定义分析器,这很有效...

    "settings":{
      "analysis": {
        "analyzer": {
          "lowercasespaceanalyzer": {
            "type": "custom",
            "tokenizer": "whitespace",
            "filter": [
              "lowercase"
            ]
          }
        }
      }
    },
    
    
    "mappings": {
     "my_type" : {
      "properties" : {
        "title" : { "type" : "string", "analyzer" : "lowercasespaceanalyzer", "tokenizer": "whitespace", "search_analyzer":"whitespace", "filter": [
          "lowercase"
        ] }
      }
     }
    }
    

    【讨论】:

    • 嗨,我遇到了同样的问题(结合空格标记器和小写字母),我正在尝试您的解决方案,但我收到以下错误:“”原因“:“[firstName] 的映射定义有不支持的参数:[filter : [lowercase]] [tokenizer : lowercase]"
    • @GiovanniGrano 我认为您在标记器中使用了lowercase,将其替换为[tokenizer : whitespace]
    【解决方案2】:

    你有两个选择 -

    简单分析器

    simple analyser 可能会满足您的需求:

    curl -XGET 'localhost:9200/myindex/_analyze?analyzer=simple&pretty' -d 'Some DATA' 
    {
      "tokens" : [ {
        "token" : "some",
        "start_offset" : 0,
        "end_offset" : 4,
        "type" : "word",
        "position" : 1
      }, {
        "token" : "data",
        "start_offset" : 5,
        "end_offset" : 9,
        "type" : "word",
        "position" : 2
      } ]
    }
    

    在映射中使用简单分析器:

    {
     "mappings": {
       "my_type" : {
          "properties" : {
            "title" : { "type" : "string", "analyzer" : "simple"}
          }
        }
      }
    }
    

    自定义分析器

    第二个选项是定义您自己的custom analyser 并指定如何标记和过滤数据。然后在您的映射中引用这个新的分析器。

    【讨论】:

    • Simple Analyzer 中包含 Letter Tokenizer,它不适用于我的用例。我需要一个自定义分析器,我设法编写了一个
    猜你喜欢
    • 1970-01-01
    • 2015-07-18
    • 1970-01-01
    • 1970-01-01
    • 2011-07-19
    • 2017-01-31
    • 2014-02-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多