簡體   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