elasticsearch - Elasticsearch渗透器的映射

标签 elasticsearch

默认情况下,我的过滤器映射如下

{
  "indexName" : {
    "mappings" : {
      ".percolator" : {
        "_id" : {
      "index" : "not_analyzed"
    },
    "properties" : {
      "query" : {
        "type" : "object",
        "enabled" : false
      }
    }
  }
}

假设我将渗透的文档包含“名称”字段,其中包含下划线

就像是
{
name : "null_value"
}

并假设存储在渗滤器中的查询类似于
{
"query":
    {"query_string":
        {"query":"name:\"null\"","defaultOperator":"AND"}
}

过滤器返回此查询,表示此文档与该查询匹配。

但我希望过滤器检查该字段是否具有即将到来的文档的确切值。

因此,如果名称:“null_value”则不应匹配,但名称:“null”则应匹配。

在这种情况下,是否必须将映射属性放到渗滤器上?还是我必须使用其他查询?

最佳答案

如果要具有完全的 token 匹配语义,则需要为“名称”字段选择适当的分析器。如果未指定映射,则将获得默认的分析器。相反,您应该使用not_analyzed。

然后在搜索方面,您将要使用术语查询。 query_string存在问题,因为它在通过文本分析管道之前已传递给查询解析器。

注意,以上方法区分大小写。如果要忽略大小写,请创建带有关键字标记器和小写标记过滤器的自定义分析器。然后在查询端使用术语查询,但要事先使用小写字母,因为不会分析术语查询。

最好的祝福

关于elasticsearch - Elasticsearch渗透器的映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24007823/

相关文章:

django - 搜索结果因分页而失败

elasticsearch - Elasticsearch DSL:存储桶不起作用

elasticsearch - Elasticsearch中堆转储的默认位置是什么?

elasticsearch - Elasticsearch Store 'searchable'列表

elasticsearch - 无法使用logstash在elasticsearch上创建索引

elasticsearch - 带有 nutch REST api 的 Nutch 弹性索引器中的未知问题

ElasticSearch:inner_hits 和 hightlight_query

elasticsearch - 如何在Logstash 5.0中每五分钟运行一次计划?

elasticsearch - ElasticSearch查询字符串查询default_operator

elasticsearch - Elasticsearch中时间序列数据的数据建模