天天看点

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

等方法获取指定的字段。

继续阅读