Elasticsearch在字符上拆分单词以进行查询

时间:2016-05-30 11:50:12

标签: elasticsearch split tokenize

我有一些文档包含像

这样的单词
{ doc : 
"_id" : "A21_A25_A59",
...
} 

当我像A25这样的查询时,我没有得到文档。

我认为我必须使用分析器进行映射以吐出'_'字符

但我并不特别喜欢它..

我已经有像

这样的标记器
"path_tokenizer" : {
            "delimiter" : "/",
            "type" : "path_hierarchy"
         }

如果我喜欢

"path_tokenizer" : {
            "delimiter" : "_",
            "type" : "separate_word"
         }

那会有用吗?

1 个答案:

答案 0 :(得分:0)

您需要使用自定义过滤器将字符_替换为空格。在示例中,它还替换了一些其他特殊字符以及下划线。

请点击此链接。 https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-pattern-replace-charfilter.html

例如:

"char_filter": {
  "my_pattern": {
    "type": "pattern_replace",
    "pattern": "(_[-()',])",
    "replacement": " "
  },
  "my_mapping": {
    "type": "mapping",
    "mappings_path": "/etc/elasticsearch/replace_words.txt"
  }
}