更改Elasticsearch路径层次结构标记符分隔符

时间:2015-12-21 14:17:29

标签: elasticsearch tokenize analyzer

我遇到了Path Hierarchy Tokenizer的一些问题。 我需要的是使用反斜杠作为分隔符来使用路径层次结构标记器。

我要做的是索引和搜索Windows路径。

 "index": {
  "analysis": {
     "tokenizer": {
        "path": {
           "type": "path_hierarchy",
           "delimeter": "\\"
        }
     },
     "analyzer": {
        "analyzer_path": {
           "type": "custom",
           "tokenizer": "path",
           "filter": "lowercase"
        }
     }
  }

当我尝试获取自定义字符串的标记化元素时,我得到一个标记

GET /test/_analyze?analyzer=analyzer_path&text=C:\Users\Admin\AppData\Local\Temp\hello.exe


"tokens": [
  {
     "token": "c:\\users\\admin\\appdata\\local\\temp\\hello.exe",
     "start_offset": 0,
     "end_offset": 43,
     "type": "word",
     "position": 1
  }
]

使用正斜杠可以得到正确的结果

GET /test/_analyze?analyzer=analyzer_path&text=C:/Users/Admin/AppData/Local/Temp/hello.exe

我得到了所有的代币。

似乎完全忽略了分隔符设置。

1 个答案:

答案 0 :(得分:1)

您有错字,delimeter应该阅读delimiter。这可能就是问题所在。

它与正斜杠一起工作的原因是因为正斜杠是默认分隔符,如果没有指定,并且由于delimeter被错误地拼写,则使用默认分隔符。

他们应该做的是因为参数未知而发出错误,而是just silently ignore it。你可能file an issue