Get API

get API允许根据其id从索引中获取指定类型的JSON文档。以下示例从名为twitter的索引获取JSON文档,该索引类型名为_doc,id值为0:

  1. GET twitter/_doc/0

上述get操作的结果是:

  1. {
  2. "_index" : "twitter",
  3. "_type" : "_doc",
  4. "_id" : "0",
  5. "_version" : 1,
  6. "found": true,
  7. "_source" : {
  8. "user" : "kimchy",
  9. "date" : "2009-11-15T14:12:12",
  10. "likes": 0,
  11. "message" : "trying out Elasticsearch"
  12. }
  13. }

上述结果包括_index_type_id_version 我们希望检索,包括实际文档的_source 文档,如果可以发现(如由指示found 字段中响应)。

API还允许使用以下方式检查文档是否存在 HEAD

  1. HEAD twitter/_doc/0

Realtime

默认情况下,get API是实时的,并且不受索引刷新率的影响(当数据对搜索可见时)。如果文档已更新但尚未刷新,则get API将就地发出刷新调用以使文档可见。这也将使上次刷新后其他文档发生变化。为了禁用实时GET,可以将realtime参数设置为false

Source filtering

默认情况下,get操作返回_source字段的内容,除非您已使用该stored_fields参数或该_source字段已禁用。您可以_source使用以下_source参数关闭检索:

  1. GET twitter/_doc/0?_source=false

如果您只需要完整的一个或两个字段,则_source可以使用_source_include &_source_exclude参数来包含或过滤掉您需要的部分。这对于大型文档尤其有用,其中部分检索可以节省网络开销。这两个参数都使用逗号分隔的字段列表或通配符表达式。例:

  1. GET twitter/_doc/0?_source_include=*.id&_source_exclude=entities

如果您只想指定包含,则可以使用较短的表示法:

  1. GET twitter/_doc/0?_source=*.id,retweeted

Stored Fields

get操作允许指定将通过传递stored_fields参数返回的一组存储字段。如果未存储请求的字段,则将忽略它们。例如,考虑以下映射:

  1. PUT twitter
  2. {
  3. "mappings": {
  4. "_doc": {
  5. "properties": {
  6. "counter": {
  7. "type": "integer",
  8. "store": false
  9. },
  10. "tags": {
  11. "type": "keyword",
  12. "store": true
  13. }
  14. }
  15. }
  16. }
  17. }

现在我们可以添加一个文档:

  1. PUT twitter/_doc/1
  2. {
  3. "counter" : 1,
  4. "tags" : ["red"]
  5. }

并尝试检索它:

  1. GET twitter/_doc/1?stored_fields=tags,counter

上述get操作的结果是:

  1. {
  2. "_index": "twitter",
  3. "_type": "_doc",
  4. "_id": "1",
  5. "_version": 1,
  6. "found": true,
  7. "fields": {
  8. "tags": [
  9. "red"
  10. ]
  11. }
  12. }

直接_source获取

使用/{index}/{type}/{id}/_source端点只获取_source文档的字段,而不包含任何其他内容。例如:

  1. GET twitter/_doc/1/_source

您还可以使用相同的源过滤参数来控制_source将返回的部分:

  1. GET twitter/_doc/1/_source?_source_include=*.id&_source_exclude=entities'

注意,_source端点还有一个HEAD变体,可以有效地测试document _source的存在。如果在映射中禁用了现有文档,则该文档将没有_source 。

  1. HEAD twitter/_doc/1/_source

首选项

控制preference哪个分片副本执行get请求。默认情况下,操作在分片复制副本之间随机化。

preference可设置为:

_primary

该操作将仅在主分片上执行。

_local

如果可能,操作将优先在本地分配的分片上执行。

自定义(字符串)值

自定义值将用于保证相同的分片将用于相同的自定义值。当在不同的刷新状态下击中不同的分片时,这可以帮助“跳跃值”。示例值可以是Web会话ID或用户名。

刷新

refresh参数可以设置为true以刷新有关的碎片get操作之前,并使其可搜索。设置它true应该在仔细考虑和验证之后完成,这不会导致系统负载过重(并减慢索引速度)。

分布式

get操作被散列为特定的分片ID。然后它被重定向到该分片ID中的一个副本并返回结果。副本是主分片及其在该分片ID组中的副本。这意味着我们将拥有的副本越多,我们将获得更好的GET缩放。

版本控制支持

version只有当当前版本等于指定文档时,才能使用该参数检索文档。对于所有版本类型,此行为都是相同的,FORCE但始终检索文档的版本类型除外。请注意,FORCE不推荐使用版本类型。

在内部,Elasticsearch已将旧文档标记为已删除并添加了一个全新的文档。旧版本的文档不会立即消失,但您将无法访问它。当您继续索引更多数据时,Elasticsearch会在后台清除已删除的文档。

elasticsearch 基础 —— Get API的更多相关文章

  1. elasticsearch 基础 —— Update API

    Update API 更新API允许基于提供的脚本更新文档.该操作从索引获取文档(与分片并置),运行脚本(使用可选的脚本语言和参数),并对结果进行索引(也允许删除或忽略操作).它使用版本控制来确保在& ...

  2. Elasticsearch 基础入门

    原文地址:Elasticsearch 基础入门 博客地址:http://www.extlight.com 一.什么是 ElasticSearch ElasticSearch是一个基于 Lucene 的 ...

  3. ElasticSearch 基础 1

    ElasticSearch 基础=============================== 索引创建 ========================== 1. RESTFUL APIAPI 基本 ...

  4. elasticsearch中的API

    elasticsearch中的API es中的API按照大类分为下面几种: 文档API: 提供对文档的增删改查操作 搜索API: 提供对文档进行某个字段的查询 索引API: 提供对索引进行操作 查看A ...

  5. ELK(elasticsearch+kibana+logstash)搜索引擎(二): elasticsearch基础教程

    1.elasticsearch的结构 首先elasticsearch目前的结构为 /index/type/id  id对应的就是存储的文档ID,elasticsearch一般将数据以JSON格式存储. ...

  6. Elasticsearch利用cat api快速查看集群状态、内存、磁盘使用情况

    使用场景 当Elasticsearch集群中有节点挂掉,我们可以去查看集群的日志信息查找错误,不过在查找错误日志之前,我们可以通过elasticsearch的cat api简单判断下各个节点的状态,包 ...

  7. Elasticsearch for python API模块化封装

    Elasticsearch for python API模块化封装 模块的具体功能 检测Elasticsearch节点是否畅通 查询Elasticsearch节点健康状态 查询包含的关键字的日志(展示 ...

  8. Springboot整合elasticSearch的官方API实例

    前言:在上一篇博客中,我介绍了从零开始安装ElasticSearch,es是可以理解为一个操作数据的中间件,可以把它作为数据的存储仓库来对待,它具备强大的吞吐能力和计算能力,其基于Lucene服务器开 ...

  9. Elasticsearch中JAVA API的使用

    1.Elasticsearch中Java API的简介 Elasticsearch 的Java API 提供了非常便捷的方法来索引和查询数据等. 通过添加jar包,不需要编写HTTP层的代码就可以开始 ...

随机推荐

  1. css 伪类选择器:checked实例讲解

    css :checked伪类选择器介绍 css :checked伪类选择器用于选择匹配所有被选中的单选按钮(radio)或复选框(checkbox),你可以结合:checked伪类选择器和:not选择 ...

  2. 使用JavaBean对象存储表格数据

    范例:表格内容接上篇 package cn.sxt.collection; import java.util.ArrayList;import java.util.Date;import java.u ...

  3. [Ctsc2015]misc

    https://lydsy.com/JudgeOnline/problem.php?id=4055 题解 观察题目要我们求的东西: \[ ans[k]=\sum_{i}\sum_j \frac{a_i ...

  4. 576 C

    C. MP3 爆ll == #include<bits/stdc++.h> using namespace std; typedef long long ll; #define P pai ...

  5. Intellij IDEA中如何给main方法赋args

    Intellij IDEA中如何给main方法赋args 程序: package com.otherExample; /** * Created by 谭雪娇 on 2017/3/29. */publ ...

  6. 组件Component详解

    [转]https://www.cnblogs.com/moqiutao/p/8328931.html

  7. 牛客提高D1t2 最小生成链

    分析 我们发现可以把题目转化为:有一个序列a,问它的排列中相邻两个值异或的最大值的最小值 我们发现序列的构成一定是前几位全是一样的 从某一位开始左面全是0右面全是1 所以只要找到一种方案是的交界两个值 ...

  8. ruby file

    E:/AutoTHCN/lib/report/generate_report/web14/20190516/LoanTool.636936123857869205_190516_140514.xlsx ...

  9. Git学习及使用

    一.认知git理论 1.git出现的背景 版本控制 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统. 许多人习惯用复制整个项目目录的方式来保存不同的版本,或许还会改名加上 ...

  10. delphi 获得时间戳 毫秒数

    function DateTimeToMilliseconds(const ADateTime: TDateTime): Int64; //获得毫秒var LTimeStamp: TTimeStamp ...