elasticsearch analyzer - 小写和空格标记器

时间:2014-12-13 02:36:39

标签: javascript elasticsearch lucene

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

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

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

请帮忙......

2 个答案:

答案 0 :(得分:10)

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

"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"
    ] }
  }
 }
}

答案 1 :(得分:3)

您有两种选择 -

简单分析器

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并指定如何标记和过滤数据。然后在映射中参考这个新的分析器。