关于撇号的Elasticsearch查询

时间:2017-12-04 07:18:30

标签: elasticsearch elasticsearch-5

我在查询弹性搜索时查询 apples 。在我们的索引数据中,文本显示为 apple's 。如果我搜索 apples ,我就没有结果。如果我搜索 apple's ,我们会得到结果。但在我担心的情况下,如果我使用 apples 搜索,我也需要 apple的查询相同的结果。有没有办法处理这类案件。

2 个答案:

答案 0 :(得分:3)

您可以通过以下方式设置char_filter来执行此操作:

PUT my_index
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_analyzer": {
          "tokenizer": "keyword",
          "char_filter": [
            "my_char_filter"
          ]
        }
    },
    "char_filter": {
      "my_char_filter": {
        "type": "mapping",
        "mappings": [
          "' => "
        ]
       }
      } 
    }
  }
}


POST my_index/_analyze
{
 "analyzer": "my_analyzer",
 "text": "apple's"
}

这将导致:

{
  "tokens": [
  {
    "token": "apples",
    "start_offset": 0,
    "end_offset": 7,
    "type": "word",
    "position": 0
  }
 ]
}

您正在从索引中删除撇号,您可以成功搜索 apple apple&#39>

答案 1 :(得分:0)

感觉就像你需要一个模糊搜索,如果我说得对。请看一下这篇文章:https://www.elastic.co/blog/found-fuzzy-search并告诉我们,如果那不是你想要的。