问题在于: 我有一个带有映射的索引(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
感谢。
答案 0 :(得分:1)
这是因为在查询字符串查询中,减号-
是一个保留字符,代表boolean operator,其目标是不包括旁边的字词。
所以你所有的疑问基本都是这样说的:
-t
:“向我提供所有不包含t
-d
:“向我提供所有不包含d
-bbbbbbbbbbbbb
:“向我提供所有不包含bbbbbbbbbbbbb
-aaaa1111
:“向我提供所有不包含aaaa1111
在上述所有情况下,检索所有文档,因为它们与查询匹配。