关于撇号的 Elasticsearch 查询

标签 elasticsearch elasticsearch-5

我在 elasticsearch 上查询,查询是 apples。在我们的索引数据中,文本的呈现方式类似于苹果的。如果我像 apples 一样搜索,我没有得到任何结果。如果我搜索 apple's,我们会得到结果。但在我看来,如果我使用 apples 进行搜索,我也需要为 apple 的 查询提供相同的结果。有什么办法可以处理这类案件。

最佳答案

您可以通过以下方式设置 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
  }
 ]
}

您正在从索引中删除撇号,您可以成功搜索 applesapple's

关于关于撇号的 Elasticsearch 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47628295/

相关文章:

elasticsearch - 使用自定义joda格式字符串在Elasticsearch中解析日期字符串

elasticsearch - Elasticsearch 文档存储

elasticsearch - 如何在运行官方 Elasticsearch docker 镜像时设置默认 'elastic' 用户密码?

elasticsearch - python代码无法创建正确的映射

elasticsearch - 在 Elasticsearch 中,如何匹配对象数组中的多个对象?

elasticsearch - Elasticsearch如何确定要查询的集群中的哪个节点

ssl - 如何在 elasticsearch 5.5 中设置 server.name?

elasticsearch - java.lang.instantiationerror org.elasticsearch.common.transport.transportaddress

java - ElasticSearch Java API AggregationBuilder 过滤器/全局 "name"参数导致 JSON 格式错误

elasticsearch - Elasticsearch 查询嵌套文档数组