首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >开头使用Hyphen (-)的查询总是返回索引的所有文档

开头使用Hyphen (-)的查询总是返回索引的所有文档
EN

Stack Overflow用户
提问于 2018-06-12 01:48:24
回答 1查看 26关注 0票数 0

问题是:我有一个带有映射的索引(ivy_task),它的字段(barCode)如下

代码语言:javascript
复制
PUT ivy_task/_mapping/ElasticTaskInfo
{
 "properties" : {
    "barCode" : {
    "type" : "text",
    "fielddata" : true,
    "analyzer": "keyword"
    }
 }
}

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

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

代码语言:javascript
复制
    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

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-12 07:08:30

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

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

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50808198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档