问题是:我有一个带有映射的索引(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个文档的barCode:
almostThere009
a-tinhte001 001
almostThere0011
almostThere0012
A-几乎有0014
almostThere0010
A-几乎有0013
谢谢。
发布于 2018-06-12 07:08:30
这是因为在查询字符串查询中,减号-是一个保留字符,它代表一个布尔算子,其目标是不包括它旁边的术语。
所以所有的查询基本上都是这样说的:
-t:“给我所有不包含术语t的文档-d:“给我所有不包含术语d的文档-bbbbbbbbbbbbb:“给我所有不包含术语bbbbbbbbbbbbb的文档-aaaa1111:“给我所有不包含术语aaaa1111的文档在所有上述情况下,都会检索所有文档,因为它们与查询匹配。
https://stackoverflow.com/questions/50808198
复制相似问题