繁体   English   中英

Elasticsearch query_string通配符语法

[英]Elasticsearch query_string wildcard syntax

显然,我可以使用以下通配符query_string查询ES:

curl 'http://localhost:9200/my-index/_search?pretty' -d '{
  "query": {
    "query_string": {
      "query": "*:sw?ft"
    }
  }
}'

此查询是否针对_all字段? 这等效于:

curl 'http://localhost:9200/my-index/_search?pretty' -d '{
  "query": {
    "query_string": {
      "default_field" : "_all"
      "query": "sw?ft"
    }
  }
}'

如果在索引中禁用_all怎么办? 我找不到它的文档。

提前致谢。

一个query_string与搜索命令设置为*:sw?ft将被转化为类似以下的(假设你的my-index指数有一个my_field场为例):

(_field_names:sw?ft | _all:sw?ft | _index:sw?ft | _parent:sw?ft | _uid:sw?ft | _type:sw?ft | _routing:sw?ft | _version:sw?ft | _timestamp:sw?ft | _source:sw?ft | _size:sw?ft | my_field:sw?ft | _id:sw?ft | _ttl:sw?ft | _boost:sw?ft)

因此, :之前的通配符将扩展到索引中的所有字段,而不仅仅是您自己定义的字段。 请特别注意query_string通配符,它​​们可能以不利的方式影响集群的性能。

因此,为回答您的问题, *将扩展到索引的所有字段,包括_all 如果只使用sw?ft作为搜索字符串,则默认情况下将使用_all

首先,这是query_string查询的文档:

它可以回答您的两个问题:

如果未在查询字符串语法中明确指定要搜索的字段,则将使用index.query.default_field导出要搜索的字段。 默认为_all字段。

因此,如果禁用_all字段,则可以对其进行更改以设置不同的默认字段。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM