在开头用连字符( - )查询总是返回索引的所有文档

时间:2018-06-12 01:48:24

标签: elasticsearch

问题在于: 我有一个带有映射的索引(ivy_task)和它的字段(barCode),如下所示

PUT ivy_task/_mapping/ElasticTaskInfo
{
 "properties" : {
    "barCode" : {
    "type" : "text",
    "fielddata" : true,
    "analyzer": "keyword"
    }
 }
}

请注意,我在此索引中有7个文档

当我使用这样的查询进行搜索时(在开头用连字符):

    POST /ivy_task/ElasticTaskInfo/_search/
    {
         "query":{"query_string": {
         "default_field": "barCode",
         "query": "-t"
         }},
         "size": 99
    }

只要我在查询的开头放置连字符,它总是返回所有7个文档。 (例如: -t,-d,-bbbbbbbbbbbbb.-aaaa1111 ) 有人可以帮我解释为什么它会返回所有7个文件吗? 以下是所有7个文档的条形码:

almostThere009

A-tinhte001

almostThere0011

almostThere0012

A-almostThere0014

almostThere0010

A-almostThere0013

感谢。

1 个答案:

答案 0 :(得分:1)

这是因为在查询字符串查询中,减号-是一个保留字符,代表boolean operator,其目标是不包括旁边的字词。

所以你所有的疑问基本都是这样说的:

  • -t:“向我提供所有不包含t
  • 一词的文件
  • -d:“向我提供所有不包含d
  • 一词的文件
  • -bbbbbbbbbbbbb:“向我提供所有不包含bbbbbbbbbbbbb
  • 一词的文件
  • -aaaa1111:“向我提供所有不包含aaaa1111
  • 一词的文件

在上述所有情况下,检索所有文档,因为它们与查询匹配。