Elasticsearch introduction
Index some documents
叢集啟動并運作後,您就可以為一些資料建立索引了。 Elasticsearch有多種攝取選項,但最終它們都做同樣的事情:将JSON文檔放入Elasticsearch索引中。
您可以使用簡單的PUT請求直接執行此操作,該請求指定要添加文檔的索引,唯一的文檔ID,以及請求正文中的一個或多個
"field"
:
"value"
對:
PUT /customer/_doc/1
{
"name": "John Doe"
}
該請求(如果尚不存在)将自動建立
customer
索引,添加ID為
1
的新文檔,并存儲
name
字段并為其建立索引。
由于這是一個新document,是以響應顯示該操作的結果是建立了該document的版本1:
{
"_index" : "customer",
"_type" : "_doc",
"_id" : "1",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 0,
"_primary_term" : 1
}
可以從群集中的任何節點立即獲得新文檔。您可以使用指定其文檔ID的GET請求檢索它:
GET /customer/_doc/1
該響應表明找到了具有指定ID的document,并顯示了已建立索引的原始源字段。
{
"_index" : "customer",
"_type" : "_doc",
"_id" : "1",
"_version" : 1,
"_seq_no" : 0,
"_primary_term" : 1,
"found" : true,
"_source" : {
"name" : "John Doe"
}
}
如果要索引的文檔很多,則可以使用
bulk API批量送出它們。 使用批量處理批處理文檔操作比單獨送出請求要快得多,因為它可以最大程度地減少網絡往返次數。
最佳批處理大小取決于許多因素:文檔大小和複雜性,索引編制和搜尋負載以及群集可用的資源。 一個好的起點是批處理1,000至5,000個文檔,總有效負載在5MB至15MB之間。 從那裡,您可以嘗試找到最佳位置。
要将一些資料導入Elasticsearch,您可以開始搜尋和分析:
- 下載下傳
示例資料集。 此随機生成的資料集中的文檔代表具有以下資訊的使用者帳戶:accounts.json
{ "account_number": 0, "balance": 16623, "firstname": "Bradshaw", "lastname": "Mckenzie", "age": 29, "gender": "F", "address": "244 Columbus Place", "employer": "Euron", "email": "[email protected]", "city": "Hobucken", "state": "CO" }
- 使用以下_bulk請求将帳戶資料索引到銀行索引中:
curl -H "Content-Type: application/json" -XPOST "localhost:9200/bank/_bulk?pretty&refresh" --data-binary "@accounts.json" curl "localhost:9200/_cat/indices?v"
- 響應表明成功索引了1,000個文檔。
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size yellow open bank l7sSYV2cQXmu6_4rJWVIww 5 1 1000 0 128.6kb 128.6kb
Start searching
将一些資料攝取到Elasticsearch索引後,您可以通過将請求發送到
_search
端點來進行搜尋。要通路全套搜尋功能,請使用Elasticsearch Query DSL在請求正文中指定搜尋條件。您可以在請求URI中指定要搜尋的索引的名稱。
例如,以下請求将檢索
bank
索引中按帳号排序的所有文檔:
GET /bank/_search
{
"query": { "match_all": {} },
"sort": [
{ "account_number": "asc" }
]
}
預設情況下,響應的
hit
部分包括符合搜尋條件的前10個文檔:
{
"took" : 63,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value": 1000,
"relation": "eq"
},
"max_score" : null,
"hits" : [ {
"_index" : "bank",
"_type" : "_doc",
"_id" : "0",
"sort": [0],
"_score" : null,
"_source" : {"account_number":0,"balance":16623,"firstname":"Bradshaw","lastname":"Mckenzie","age":29,"gender":"F","address":"244 Columbus Place","employer":"Euron","email":"[email protected]","city":"Hobucken","state":"CO"}
}, {
"_index" : "bank",
"_type" : "_doc",
"_id" : "1",
"sort": [1],
"_score" : null,
"_source" : {"account_number":1,"balance":39225,"firstname":"Amber","lastname":"Duke","age":32,"gender":"M","address":"880 Holmes Lane","employer":"Pyrami","email":"[email protected]","city":"Brogan","state":"IL"}
}, ...
]
}
}
該響應還提供有關搜尋請求的以下資訊:
-
– Elasticsearch運作查詢所需的時間(以毫秒為機關)took
-
– 搜尋請求是否逾時timed_out
-
– 搜尋了多少個分片以及成功,失敗或跳過了多少個分片。or were skipped._shards
-
– 找到最相關檔案的分數max_score
-
- 找到多少個比對的文檔hits.total.value
-
- 文檔的排序位置(不按相關性得分排序時)hits.sort
-
- 文檔的相關性得分(使用hits._score
時不适用)match_all
每個搜尋請求都是獨立的:Elasticsearch在請求中不維護任何狀态資訊。要翻閱搜尋結果,請在請求中指定from和size參數。
例如,以下請求的比對數為10到19:
GET /bank/_search
{
"query": { "match_all": {} },
"sort": [
{ "account_number": "asc" }
],
"from": 10,
"size": 10
}
既然您已經了解了如何送出基本的搜尋請求,則可以開始建構比
match_all
有趣的查詢。
要在字段中搜尋特定字詞,可以使用
match
查詢。例如,以下請求搜尋
address
字段以查找其位址包含
mill
或
land
:
GET /bank/_search
{
"query": { "match": { "address": "mill lane" } }
}
要構造更複雜的查詢,可以使用
bool
查詢來組合多個查詢條件。您可以根據需要(must match),期望(shhould match)或不期望(must not match)指定條件。
例如,以下請求在
bank
索引中搜尋屬于40歲客戶的帳戶,但不包括居住在Idaho(ID)的任何人:
GET /bank/_search
{
"query": {
"bool": {
"must": [
{ "match": { "age": "40" } }
],
"must_not": [
{ "match": { "state": "ID" } }
]
}
}
}
布爾查詢中的每個must,should和must_not元素都稱為查詢子句。文檔滿足每個必須或應條款中的标準的程度會提高文檔的相關性得分。分數越高,文檔就越符合您的搜尋條件。預設情況下,Elasticsearch傳回按這些相關性分數排名的文檔。
must_not子句中的條件被視為過濾器。它影響檔案是否包含在結果中,但不會影響檔案的評分方式。您還可以根據結構化資料顯式指定任意過濾器以包括或排除文檔。
例如,以下請求使用範圍過濾器将結果限制為餘額在20,000美元到30,000美元(含)之間的帳戶。
GET /bank/_search
{
"query": {
"bool": {
"must": { "match_all": {} },
"filter": {
"range": {
"balance": {
"gte": 20000,
"lte": 30000
}
}
}
}
}
}
Analyze results with aggregations
Elasticsearch聚合使您能夠擷取有關搜尋結果的元資訊,并回答諸如“德克薩斯州有多少個帳戶持有人?”或“田納西州的平均帳戶餘額是多少?”之類的問題。您可以在一個請求中搜尋文檔,過濾命中并使用彙總分析結果。
例如,以下請求使用
terms
彙總将
bank
索引中的所有帳戶按狀态分組,并按降序傳回帳戶數量最多的十個州:
GET /bank/_search
{
"size": 0,
"aggs": {
"group_by_state": {
"terms": {
"field": "state.keyword"
}
}
}
}
響應中的
buckets
是
state
字段的值。
doc_count
顯示每個狀态下的帳戶數。例如,您可以看到
ID(愛達荷州)
中有27個帳戶。因為請求集
size=0
,是以響應僅包含聚合結果。
{
"took": 29,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped" : 0,
"failed": 0
},
"hits" : {
"total" : {
"value": 1000,
"relation": "eq"
},
"max_score" : null,
"hits" : [ ]
},
"aggregations" : {
"group_by_state" : {
"doc_count_error_upper_bound": 20,
"sum_other_doc_count": 770,
"buckets" : [ {
"key" : "ID",
"doc_count" : 27
}, {
"key" : "TX",
"doc_count" : 27
}, {
"key" : "AL",
"doc_count" : 25
}, {
"key" : "MD",
"doc_count" : 25
}, {
"key" : "TN",
"doc_count" : 23
}, {
"key" : "MA",
"doc_count" : 21
}, {
"key" : "NC",
"doc_count" : 21
}, {
"key" : "ND",
"doc_count" : 21
}, {
"key" : "ME",
"doc_count" : 20
}, {
"key" : "MO",
"doc_count" : 20
} ]
}
}
}
您可以組合聚合以建構更複雜的資料彙總。例如,以下請求在前一個
group_by_state
聚合内嵌套avg聚合,以計算每個狀态的平均帳戶餘額。
GET /bank/_search
{
"size": 0,
"aggs": {
"group_by_state": {
"terms": {
"field": "state.keyword"
},
"aggs": {
"average_balance": {
"avg": {
"field": "balance"
}
}
}
}
}
}
除了這些基本的存儲桶和名額聚合外,Elasticsearch還提供了專門的聚合,用于在多個字段上操作并分析特定類型的資料,例如日期,IP位址和地理資料。您還可以将單個聚合的結果饋送到管道聚合中,以進行進一步分析。
聚合提供的核心分析功能可啟用進階功能,例如使用機器學習來檢測異常。
Mapping
映射是定義文檔及其包含的字段的存儲和索引方式的過程。例如,使用映射定義:
- 哪些字元串字段應視為全文字段。
- 哪些字段包含數字,日期或地理位置。
- format 日期值的格式。
- 自定義規則來控制動态添加字段的映射。 dynamically added fields .
Field datatypes
每個字段的資料類型可以是:
- a simple type like
,text
keyword
date
long
double
orboolean
ip
- 支援JSON的層次結構性質的類型
object
nested
- 專業型
geo_point
, orgeo_shape
completion
為不同的目的以不同的方式對同一字段建立索引通常很有用。例如,可以将
string
字段索引為全文搜尋的
text
字段,以及作為排序或聚合的
keyword
字段。另外,您可以使用标準分析器,英語分析器和法語分析器為字元串字段建立索引。
這是多字段的目的。大多數資料類型通過
fields
參數支援多字段。
Dynamic mapping(動态映射)
字段和映射類型在使用之前不需要定義。通過動态映射,僅通過索引文檔即可自動添加新的字段名稱。新字段既可以添加到頂級映射類型,也可以添加到内部對象和嵌套字段。
object
and
nested
可以将動态映射規則配置為自定義用于新字段的映射。
dynamic mapping使用顯式映射建立索引
您可以使用create index API建立帶有顯式映射的新索引。
PUT /my-index
{
"mappings": {
"properties": {
"age": { "type": "integer" },
"email": { "type": "keyword" },
"name": { "type": "text" }
}
}
}
Add a field to an existing mapping
将字段添加到現有映射 您可以使用放置映射API将一個或多個新字段添加到現有索引。
下面的示例添加employee-id,這是一個關鍵字字段,其索引映射參數值為false。這意味着已存儲employee-id字段的值,但未編制索引或可用于搜尋。
PUT /my-index/_mapping
{
"properties": {
"employee-id": {
"type": "keyword",
"index": false
}
}
}
更新字段的映射
您不能更改現有字段的映射,但以下情況除外:
- You can add new properties to an
field.object
- 您可以使用字段映射參數來啟用多字段。
field
- 您可以更改ignore_above映射參數的值。
ignore_above
更改現有字段的映射可能會使已經建立索引的資料無效。如果需要更改字段的映射,請使用正确的映射建立一個新索引,然後将資料重新索引
reindex到該索引中。如果隻想重命名字段,請考慮添加别名
alias
字段。
檢視索引的映射
您可以使用get mapping API檢視現有索引的映射。
GET /my-index/_mapping
Query DSL
Elasticsearch提供了基于JSON的完整查詢DSL(特定于域的語言)來定義查詢。将查詢DSL視為查詢的AST(抽象文法樹),它由兩種子句組成:
- Leaf query clauses
葉子查詢子句在特定字段中查找特定值,例如match,term或range查詢。這些查詢可以自己使用。
- Compound query clauses
複合查詢子句包裝其他葉查詢或複合查詢,并用于以邏輯方式組合多個查詢(例如bool或dis_max查詢),或更改其行為(例如constant_score查詢)。
查詢子句的行為會有所不同,具體取決于它們是在查詢上下文中還是在過濾器上下文中使用。
query context or filter context查詢和過濾上下文
Relevance scores
預設情況下,Elasticsearch按相關性得分對比對的搜尋結果進行排序,該得分衡量每個文檔與查詢的比對程度。
相關性分數是一個正浮點數,在
searchAPI的_score元字段中傳回。 _score越高,文檔越相關。雖然每種查詢類型可以不同地計算相關性分數,但是分數計算還取決于查詢子句是在查詢上下文中還是在過濾器上下文中運作。
Query context 查詢上下文
在查詢上下文中,查詢子句回答“此文檔與該查詢子句的比對程度如何”的問題。除了确定文檔是否比對外,查詢子句還計算
_score
元字段中的相關性得分。
每當将查詢子句傳遞到查詢參數(例如搜尋API中的查詢參數)時,查詢上下文即生效。
Filter context 過濾上下文
在過濾器上下文中,查詢子句回答問題“此文檔是否與此查詢子句比對?”答案是簡單的“是”或“否”,即不計算分數。過濾器上下文主要用于過濾結構化資料,例如
- Does this
fall into the range 2015 to 2016?timestamp
- Is the
field set tostatus
?"published"
常用過濾器将由Elasticsearch自動緩存,以提高性能。
每當将查詢子句傳遞到過濾器參數(例如bool查詢中的filter或must_not參數,constant_score查詢中的filter參數或過濾器聚合)時,過濾器上下文即生效。
Example of query and filter contexts
以下是在searchAPI的查詢和過濾器上下文中使用的查詢子句的示例。此查詢将比對滿足以下所有條件的文檔:
- The
field contains the wordtitle
search
-
content
elasticsearch
-
field contains the exact wordstatus
published
-
field contains a date from 1 Jan 2015 onwards.publish_date
GET /_search
{
"query": {
"bool": {
"must": [
{ "match": { "title": "Search" }},
{ "match": { "content": "Elasticsearch" }}
],
"filter": [
{ "term": { "status": "published" }},
{ "range": { "publish_date": { "gte": "2015-01-01" }}}
]
}
}
}
-
parameter indicates query context.query
-
和兩個bool
子句用于查詢上下文,這意味着它們用于對每個文檔的比對程度進行評分。match
-
參數訓示過濾器上下文。其filter
和term
子句用于過濾器上下文。它們将過濾出不比對的文檔,但不會影響比對文檔的分數。range
在查詢上下文中為查詢計算的分數表示為單精度浮點數;它們隻有24位才能表示有效的精度。超過有效位數的分數計算将被轉換為浮點數而失去精度。
在查詢上下文中使用查詢子句來确定會影響比對文檔得分的條件(即文檔比對程度),并在過濾器上下文中使用所有其他查詢子句。
Compound queries 複合查詢
複合查詢包裝其他複合查詢或葉查詢,以組合其結果和分數,更改其行為或從查詢切換到過濾器上下文。
該組中的查詢是:
預設查詢,用于組合多個葉子或複合查詢子句(must,should,must_not或filter子句)。must和should子句的分數組合在一起-比對的子句越多越好-而must_not和filter子句在過濾器上下文中執行。
傳回與肯定查詢比對的文檔,但減少與否定查詢比對的文檔的分數。
一個查詢,它包裝另一個查詢,但是在過濾器上下文中執行它。所有比對的文檔都使用相同的“常量”
_score
。
一個查詢,它接受多個查詢,并傳回與任何查詢子句比對的任何文檔。當布爾查詢合并所有比對查詢的分數時,dis_max查詢使用單個最佳比對查詢子句的分數。
使用functions修改主查詢傳回的分數,以考慮諸如受歡迎程度,新近度,距離或使用腳本實作的自定義算法等因素。
Boolean query
與文檔比對的查詢,這些文檔與其他查詢的布爾組合比對。布爾查詢映射到Lucene BooleanQuery。它是使用一個或多個布爾子句建構的,每個子句都具有類型的出現。發生類型為:
Occur | Description |
---|---|
| 子句(查詢)必須出現在比對的文檔中,并将有助于得分。 |
| 子句(查詢)必須出現在比對的文檔中。但是與查詢分數不同的是,忽略該分數。 Filter子句在過濾器上下文中執行,這意味着計分被忽略,并且子句被視為用于緩存。 |
| 子句(查詢)應出現在比對的文檔中。 |
| 子句(查詢)不得出現在比對的文檔中。子句在過濾器上下文中執行,這意味着計分被忽略,并且子句被視為用于緩存。由于計分被忽略,是以所有文檔的分數均傳回0。 |
bool
query takes a more-matches-is-better approach, so the score from each matching
must
should
clause will be added together to provide the final
_score
for each document.
POST _search
{
"query": {
"bool" : {
"must" : {
"term" : { "user" : "kimchy" }
},
"filter": {
"term" : { "tag" : "tech" }
},
"must_not" : {
"range" : {
"age" : { "gte" : 10, "lte" : 20 }
}
},
"should" : [
{ "term" : { "tag" : "wow" } },
{ "term" : { "tag" : "elasticsearch" } }
],
"minimum_should_match" : 1,
"boost" : 1.0
}
}
}
在filter元素下指定的查詢對得分沒有影響-得分将傳回0。得分僅受指定查詢的影響。
Boosting query
傳回比對肯定查詢的文檔,同時降低也比對否定查詢的文檔的相關性得分。
您可以使用
boosting
查詢來降級某些文檔,而不必将它們從搜尋結果中排除。
positive
(必需的查詢對象)要運作的查詢。傳回的所有文檔都必須與此查詢比對。
negative
(必需的查詢對象)查詢用于降低比對文檔的相關性得分。
如果傳回的文檔與肯定查詢和該查詢比對,則增強查詢将計算該文檔的最終相關性得分,如下所示:
- 從肯定查詢中擷取原始的相關性分數。
- 将分數乘以negative_boost值。
negative_boost
(必需,浮點數)0到1.0之間的浮點數,用于降低與否定查詢比對的文檔的相關性得分。
Example request
GET /bank/_search
{
"query": {
"boosting": {
"positive": {
"match": {
"state": "ID"
}
},
"negative": {
"range": {
"balance": {
"gte": 20000,
"lte": 30000
}
}
},
"negative_boost": 0.5
}
}
}
Constant score query
包裝
過濾查詢,并傳回每個
相關文檔的
相關性得分等于
boost
參數值。
filter
(必需的查詢對象)
過濾要運作的
查詢。傳回的所有文檔都必須與此查詢比對。
過濾查詢不計算
相關性分數。為了提高性能,Elasticsearch自動緩存經常使用的過濾器查詢。
boost
(可選,float)浮點數用作與查詢比對的每個文檔 的恒定
filter
。預設為
1.0
GET /bank/_search
{
"query": {
"constant_score": {
"filter": {"range": {
"balance": {
"gte": 20000,
"lte": 30000
}
}},
"boost": 0.1
}
}
}
Full text queries 全文檢索
全文查詢使您可以搜尋已
分析的文本字段,例如電子郵件的正文。使用在索引期間應用于字段的同一分析器來處理查詢字元串。
全文查詢,可以對比對項的順序和接近度進行細粒度控制。
用于執行全文查詢的标準查詢,包括模糊比對和短語或接近查詢。
建立一個
bool
與每個詞條比對的
term
查詢作為查詢,但最後一個詞條作為
prefix
查詢比對
與
match
查詢類似,但用于比對确切的短語或單詞接近比對。
match_phrase
查詢類似,但是對最後一個單詞進行通配符搜尋。
match
查詢的多字段版本。
一個更專業的查詢,它對不常見的單詞給予更多的偏愛。
支援緊湊的Lucene
查詢字元串文法,允許您在單個查詢字元串中指定AND | OR | NOT條件和多字段搜尋。僅限于專業使用者。
query_string
适用于直接向使用者公開的文法的更簡單,更可靠的版本。
Intervals query
根據比對項的順序和接近程度傳回文檔。
間隔查詢使用比對規則,該規則由一小組定義構成。然後将這些規則應用于來自指定字段的術語。
這些定義産生的最小間隔序列跨越了文本主體中的各個術語。這些間隔可以由父源進一步組合和過濾。
Match query
傳回與提供的文本,數字,日期或布爾值比對的文檔。比對之前分析提供的文本。
比對查詢是用于執行全文搜尋的标準查詢,其中包括模糊比對的選項。
GET /_search
{
"query": {
"match" : {
"message" : {
"query" : "this is a test"
}
}
}
}
REST APIs
Index APIs
Create Index
建立一個新索引。
PUT /twitter
Request
PUT /<index>
您可以使用create index API将新索引添加到Elasticsearch叢集。建立索引時,可以指定以下内容:
- Settings 索引設定
- Mappings 索引中字段的映射
- Index aliases 索引别名
Path parameters
<index>
(可選,字元串)您要建立的索引的名稱。
索引名稱必須滿足以下條件:
- Lowercase only
- Cannot include
\
/
*
?
"
<
>
(space character),|
,
#
- Indices prior to 7.0 could contain a colon (
), but that’s been deprecated and won’t be supported in 7.0+:
- Cannot start with
-
_
+
- Cannot be
.
..
- Cannot be longer than 255 bytes (note it is bytes, so multi-byte characters will count towards the 255 limit faster)
Query parameters
-
include_type_name
[7.0.0] Deprecated in 7.0.0. Mapping types have been deprecated. See
Removal of mapping types.(Optional, boolean) If
true
, a mapping type is expected in the body of mappings. Defaults to
false
-
wait_for_active_shards
(可選,字元串)在繼續操作之前必須處于活動狀态的分片副本數。設定為全部或任何正整數,直到索引中的分片總數(number_of_replicas + 1)。預設值:1,主分片。
-
timeout
(可選,時間機關)指定等待響應的時間。如果在逾時到期之前未收到任何響應,則請求将失敗并傳回錯誤。預設為30秒。
-
master_timeout
(可選,時間機關)指定等待連接配接到主節點的時間段。如果在逾時到期之前未收到任何響應,則請求将失敗并傳回錯誤。預設為30秒。
Request body
-
aliases
(Optional,
alias object) Index aliases which include the index. See
Update index alias-
mappings
) Mapping for fields in the index. If specified, this mapping can include:
- Field names
- Mapping parameters
See
-
settings
) Configuration options for the index. See
Index SettingsExamples例子
Index settings索引設定
建立的每個索引都可以具有與之關聯的特定設定,這些設定在主體中定義:
PUT /twitter
{
"settings" : {
"index" : {
"number_of_shards" : 3, 預設1
"number_of_replicas" : 2 預設1
}
}
}
PUT /twitter
{
"settings" : {
"number_of_shards" : 3,
"number_of_replicas" : 2
}
}
建立索引API允許提供映射定義:
PUT /test
{
"settings" : {
"number_of_shards" : 1
},
"mappings" : {
"properties" : {
"field1" : { "type" : "text" }
}
}
}
Aliases
PUT /test
{
"aliases" : {
"alias_1" : {},
"alias_2" : {
"filter" : {
"term" : {"user" : "kimchy" }
},
"routing" : "kimchy"
}
}
}
預設情況下,索引建立僅在每個分片的主副本已啟動或請求逾時時才向用戶端傳回響應。索引建立響應将訓示發生了什麼:
{
"acknowledged": true,
"shards_acknowledged": true,
"index": "test"
}
acknowledged
訓示索引是否在叢集中成功建立, 而
shards_acknowledged
訓示在逾時之前是否為索引中的每個分片啟動了必要數量的分片副本。請注意,
acknowledged
shards_acknowledged
仍然可能為假,但索引建立成功。 這些值僅表示操作是否在逾時之前完成。如果accepted為false,那麼在使用新建立的索引更新叢集狀态之前,我們會逾時,但是可能很快就會建立它。 If
shards_acknowledged
is
false
, then we timed out before the requisite number of shards were started (by default just the primaries), even if the cluster state was successfully updated to reflect the newly created index (i.e.
acknowledged=true
).
我們可以通過索引設定index.write.wait_for_active_shards更改僅等待主分片啟動的預設設定
Search APIs
Most search APIs are
multi-index, with the exception of the
Explain APIendpoints.
Search
傳回與請求中定義的查詢比對的搜尋命中。
GET /twitter/_search?q=tag:wow
GET /<index>/_search
POST /<index>/_search
GET /_search
POST /_search
允許您執行搜尋查詢并擷取與查詢比對的搜尋命中。可以使用簡單查詢字元串作為參數來提供查詢,也可以使用請求正文來提供查詢。
query string as a parameter, or using a
request body為確定快速響應,如果一個或多個分片失敗,搜尋API将以部分結果響應。有關更多資訊,請參見分片故障。
<index>
(可選,字元串)索引名稱的逗号分隔清單或通配符表達式,用于限制請求。
allow_no_indices
(可選,布爾值)如果為true,則如果通配符表達式或_all值僅檢索丢失或閉合的索引,則請求不會傳回錯誤。
此參數還适用于指向别名缺失或封閉索引的索引别名。
allow_partial_search_results
(可選,布爾值)訓示如果部分搜尋失敗或逾時,是否應傳回錯誤。預設為true。
query
query object ) Defines the search definition using the