如何规范化弹性搜索查询中的周期(例如 JJ Abrams == J.J Abrams)?

How to normalize periods in elastic search query (such that JJ Abrams == J.J Abrams)?

我需要它,以便其中带有句点的单词等于非句点变体。

我看到文档中有一个关于分析器和令牌过滤器的部分,但我发现它相当简洁,但我不确定如何去做。

使用char filter来消除点,例如:

PUT /no_dots
{
  "settings": {
    "analysis": {
      "char_filter": {
        "my_mapping": {
          "type": "mapping",
          "mappings": [
            ".=>"
          ]
        }
      },
      "analyzer": {
        "my_no_dots_analyzer": {
          "tokenizer": "standard",
          "char_filter": [
            "my_mapping"
          ]
        }
      }
    }
  },
  "mappings": {
    "test": {
      "properties": {
        "text": {
          "type": "string",
          "analyzer": "my_no_dots_analyzer"
        }
      }
    }
  }
}

并对其进行测试 GET /no_dots/_analyze?analyzer=my_no_dots_analyzer&text=J.J Abrams returns:

{
   "tokens": [
      {
         "token": "JJ",
         "start_offset": 0,
         "end_offset": 3,
         "type": "<ALPHANUM>",
         "position": 1
      },
      {
         "token": "Abrams",
         "start_offset": 4,
         "end_offset": 10,
         "type": "<ALPHANUM>",
         "position": 2
      }
   ]
}