一尘不染

Elasticsearch定制分析器

elasticsearch

是否可以创建可按空间拆分索引然后创建两个令牌的自定义elasticsearch分析器?一是空间前的一切,二是空间。例如:我存储的记录字段包含以下文本:“
35 G”。现在,我想通过仅在该字段中键入“ 35”或“ 35 G”查询来接收该记录。因此,Elastic应该创建两个令牌:[‘35’,‘35
G’],并且不再更多。

如果可能,如何实现?


阅读 222

收藏
2020-06-22

共1个答案

一尘不染

可使用path_hierarchytokenizer实现

PUT test
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_analyzer": {
          "tokenizer": "my_tokenizer"
        }
      },
      "tokenizer": {
        "my_tokenizer": {
          "type": "path_hierarchy",
          "delimiter": " "
        }
      }
    }
  }
  ...
}

现在

POST test/_analyze
{
  "analyzer": "my_analyzer",
  "text": "35 G"
}

输出

{
  "tokens": [
    {
      "token": "35",
      "start_offset": 0,
      "end_offset": 2,
      "type": "word",
      "position": 0
    },
    {
      "token": "35 G",
      "start_offset": 0,
      "end_offset": 4,
      "type": "word",
      "position": 0
    }
  ]
}
2020-06-22