[英]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.