开头带有连字符 (-) 的查询始终返回索引的所有文档



这是问题所在: 我有一个带有映射的索引(ivy_task(及其字段(条形码(,如下所示

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 个文档的条形码:

差不多有009

A-tinhte001

几乎有0011

几乎那里0012

a-几乎有0014

几乎有0010

a-几乎有0013

谢谢。

这是因为在查询字符串查询中,减号-是一个保留字符,代表布尔运算符,其目标是在其旁边不包含术语。

所以你所有的查询基本上都是这样说的:

  • -t:"给我所有不包含术语的文件t
  • -d:"给我所有不包含术语的文件d
  • -bbbbbbbbbbbbb:"给我所有不包含术语的文件bbbbbbbbbbbbb
  • -aaaa1111:"给我所有不包含术语的文件aaaa1111

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

最新更新