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

Elasticsearch, index first and last letter only, 'abc' => 'a' 'c'

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

例如

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

我该如何处理?

模式分析器是一个选项。示例:

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

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

abc => a c

abc def => a f

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

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