Elasticsearch,仅索引第一个和最后一个字母,'abc'=> 'a''c'

时间:2015-07-27 10:18:14

标签: elasticsearch filter analyzer

我只想索引第一个和最后一个字母。

例如

'abc'将被编入索引为'a'和'c'

我该如何处理?

1 个答案:

答案 0 :(得分:0)

模式分析器是一种选择。例如:

{
  "settings": {
    "analysis": {
      "analyzer": {
        "firstAndLast": {
          "type": "pattern",
          "pattern": "(?<=^.).*(?=.$)" 
        }
      }
    }
  }
}

此模式将从以下输入生成以下标记:

abc =&gt; a c

abc def =&gt; a f

编辑: 如果您想为每个单词生成第一个和最后一个单词,则必须按如下方式定义自定义分析器:

{
  "settings": {
    "analysis": {
      "filter": {
        "regexpFilter": {
          "type": "pattern_capture",
          "preserve_original": "false",
          "patterns": [
            "(^\w)|(\w$)"
          ]
        }
      },
      "analyzer": {
        "test": {
          "filter": [
            "regexpFilter"
          ],
          "tokenizer": "whitespace"
        }
      }
    }
  }
}