这是问题所在: 我有一个带有映射的索引(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
在上述所有情况下,都会检索所有文档,因为它们与查询匹配。