1. 程式人生 > >Elasticsearch-基本操作1

Elasticsearch-基本操作1

index true 結果 大寫 block 自動生成 超時 delet 類型


Elasticsearch版本:6.0


一、文檔

一個文檔不僅包含數據,也包含元數據,三個必須的元數據如下

_index:具有共同特性分到一起的文檔集合,標示了文檔的存放位置;

名字小寫,不以下劃線開頭,不包含逗號。

_type:表示文檔的類型,在索引中對數據進行邏輯分區;

名字大寫或小寫,不以下劃線或句號開頭,不包含逗號,並且長度限制256個字符。

_id:文檔的唯一標識,和_index和_type組合可以唯一確定Elasticsearch中的一個文檔;

可以自定義id值,或者由Elasticsearch來生成。

二、Rest風格

PUT /{index}/{type}/{id}
{
  "field": "value"
}

POST:創建,不指定id時,Elasticsearch自動生成id,指定id時,如果文檔存在,會返回409 Conflict;

PUT:可以創建/更新文檔,更新時,舊文檔被標記為刪除,增加新文檔,Elasticsearch後臺清理這些標記刪除的文檔;

GET:搜索文檔;

DELETE:刪除文檔,實際上是在.del文件中被標記刪除,被刪除的文檔仍然可以被查詢匹配到,但是它會在最終結果被返回前從結果集移除,更新操作類似;


部分更新文檔

使用PUT整個更新文檔時,需要檢索並修改,再重新索引整個文檔,而使用update API可以部分更行文檔,需要用POST /_update操作,實際上它在內部依然進行了檢索-修改-重建索引的過程,但是這個過程是發生在分片內部的,避免多次請求的網絡開銷。

三、搜索結果

1、hits:包含total字段表示匹配到的文檔總數;

包含_index、_type、_id、_source字段,標記整個文檔信息;

_score字段表示文檔和查詢的匹配程度,搜索結果默認按照_score降序排序;

max_score是_score的最大值;

2、took:執行整個搜索消耗了多少毫秒;

3、_shards:查詢中參與分片的總數,以及分別成功和失敗了多少個;

4、timed_out:查詢是否超時true/false;


Elasticsearch默認查詢分頁,默認返回十條數據,可以指定分頁參數

size:返回的結果數量,默認10

from:頁數,默認0


分頁的問題

Elasticsearch是分布式的,分頁時會從各個分片產生結果集,最後匯總到協調節點重新排序獲得結果集,對多余的結果進行拋棄,所以一般查詢不要超過1000個結果。

Elasticsearch-基本操作1