天天看點

Elasticsearch基本操作之擷取

擷取是指的是擷取指定id的記錄,這和查詢稍微有些差别,那麼在擷取記錄的過程中有哪些知識點呢?

首先要知道

GET twitter/_doc/0

就是擷取twitter索引中id為0的記錄,這就是标準的用法,同時可以使用

HEAD twitter/_doc/0

判斷這條記錄是否存在。

實時性

在請求中可以加上請求參數realtime,realtime的值預設為true,也就表示甭管這條記錄有沒有被重新整理refresh,都可以擷取到,不受es預設refresh的重新整理頻率1s的影響,如果這時候記錄被更改但是還沒有被refresh,如果這時候進行了查詢操作,不好意思,查到的是舊的文檔。但是,在本文的擷取操作get中則仍然可以擷取到最新的文檔,就是這個realtime參數所起的作用。

如果關閉了realtime,設定為false,那就隻能依靠es的refresh重新整理頻率了。

source字段的過濾

例如:

127.0.0.1:9200/my_index/doc/1?_source=title

,可以篩選指定的source字段,多字段以逗号分隔。

其中

_source

也可以替換為

_source_include

或者

_source_exclude

分别代表篩選和排除的字段

隻擷取source字段

有時候在實際操作時,我們隻需要source字段就可以了,其他的索引資訊啥的都不怎麼需要,這時候就可以使用

GET twitter/_source/1

直接擷取source字段,但是,此方法貌似隻能在6.x版本生效,我本地的5.6版本的es無法支援,加上doc_type補全路徑也不行。

存儲字段

在建立索引之初或者建立doc_type之初,可以指定一個字段的store的屬性(true or false),且隻能對葉子節點生效,例如說一個字段為

"info:{"age":10}"

,這種情況下隻能對age設定store屬性,不能對info設定。

有了這個屬性,在擷取時就可以使用

stored_fields=xxxx,yyyy

等方法擷取指定的字段。

繼續閱讀