elasticsearch 基础 —— Get API
Get API
get API允许根据其id从索引中获取指定类型的JSON文档。以下示例从名为twitter的索引获取JSON文档,该索引类型名为_doc,id值为0:
GET twitter/_doc/0
上述get操作的结果是:
{
"_index" : "twitter",
"_type" : "_doc",
"_id" : "0",
"_version" : 1,
"found": true,
"_source" : {
"user" : "kimchy",
"date" : "2009-11-15T14:12:12",
"likes": 0,
"message" : "trying out Elasticsearch"
}
}
上述结果包括_index,_type,_id和_version 我们希望检索,包括实际文档的_source 文档,如果可以发现(如由指示found 字段中响应)。
API还允许使用以下方式检查文档是否存在 HEAD:
HEAD twitter/_doc/0
Realtime
默认情况下,get API是实时的,并且不受索引刷新率的影响(当数据对搜索可见时)。如果文档已更新但尚未刷新,则get API将就地发出刷新调用以使文档可见。这也将使上次刷新后其他文档发生变化。为了禁用实时GET,可以将realtime参数设置为false。
Source filtering
默认情况下,get操作返回_source字段的内容,除非您已使用该stored_fields参数或该_source字段已禁用。您可以_source使用以下_source参数关闭检索:
GET twitter/_doc/0?_source=false
如果您只需要完整的一个或两个字段,则_source可以使用_source_include &_source_exclude参数来包含或过滤掉您需要的部分。这对于大型文档尤其有用,其中部分检索可以节省网络开销。这两个参数都使用逗号分隔的字段列表或通配符表达式。例:
GET twitter/_doc/0?_source_include=*.id&_source_exclude=entities
如果您只想指定包含,则可以使用较短的表示法:
GET twitter/_doc/0?_source=*.id,retweeted
Stored Fields
get操作允许指定将通过传递stored_fields参数返回的一组存储字段。如果未存储请求的字段,则将忽略它们。例如,考虑以下映射:
PUT twitter
{
"mappings": {
"_doc": {
"properties": {
"counter": {
"type": "integer",
"store": false
},
"tags": {
"type": "keyword",
"store": true
}
}
}
}
}
现在我们可以添加一个文档:
PUT twitter/_doc/1
{
"counter" : 1,
"tags" : ["red"]
}
并尝试检索它:
GET twitter/_doc/1?stored_fields=tags,counter
上述get操作的结果是:
{
"_index": "twitter",
"_type": "_doc",
"_id": "1",
"_version": 1,
"found": true,
"fields": {
"tags": [
"red"
]
}
}
直接_source获取
使用/{index}/{type}/{id}/_source端点只获取_source文档的字段,而不包含任何其他内容。例如:
GET twitter/_doc/1/_source
您还可以使用相同的源过滤参数来控制_source将返回的部分:
GET twitter/_doc/1/_source?_source_include=*.id&_source_exclude=entities'
注意,_source端点还有一个HEAD变体,可以有效地测试document _source的存在。如果在映射中禁用了现有文档,则该文档将没有_source 。
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的更多相关文章
- elasticsearch 基础 —— Update API
Update API 更新API允许基于提供的脚本更新文档.该操作从索引获取文档(与分片并置),运行脚本(使用可选的脚本语言和参数),并对结果进行索引(也允许删除或忽略操作).它使用版本控制来确保在& ...
- Elasticsearch 基础入门
原文地址:Elasticsearch 基础入门 博客地址:http://www.extlight.com 一.什么是 ElasticSearch ElasticSearch是一个基于 Lucene 的 ...
- ElasticSearch 基础 1
ElasticSearch 基础=============================== 索引创建 ========================== 1. RESTFUL APIAPI 基本 ...
- elasticsearch中的API
elasticsearch中的API es中的API按照大类分为下面几种: 文档API: 提供对文档的增删改查操作 搜索API: 提供对文档进行某个字段的查询 索引API: 提供对索引进行操作 查看A ...
- ELK(elasticsearch+kibana+logstash)搜索引擎(二): elasticsearch基础教程
1.elasticsearch的结构 首先elasticsearch目前的结构为 /index/type/id id对应的就是存储的文档ID,elasticsearch一般将数据以JSON格式存储. ...
- Elasticsearch利用cat api快速查看集群状态、内存、磁盘使用情况
使用场景 当Elasticsearch集群中有节点挂掉,我们可以去查看集群的日志信息查找错误,不过在查找错误日志之前,我们可以通过elasticsearch的cat api简单判断下各个节点的状态,包 ...
- Elasticsearch for python API模块化封装
Elasticsearch for python API模块化封装 模块的具体功能 检测Elasticsearch节点是否畅通 查询Elasticsearch节点健康状态 查询包含的关键字的日志(展示 ...
- Springboot整合elasticSearch的官方API实例
前言:在上一篇博客中,我介绍了从零开始安装ElasticSearch,es是可以理解为一个操作数据的中间件,可以把它作为数据的存储仓库来对待,它具备强大的吞吐能力和计算能力,其基于Lucene服务器开 ...
- Elasticsearch中JAVA API的使用
1.Elasticsearch中Java API的简介 Elasticsearch 的Java API 提供了非常便捷的方法来索引和查询数据等. 通过添加jar包,不需要编写HTTP层的代码就可以开始 ...
随机推荐
- [web 安全] xxe
一.探测漏洞 1.是否支持实体解析. 2.是否支持外部实体解析. 2.1 直接读取本地文件: 2.2 远程文件: 3.不回显错误,则用 blind xxe.(先获取本地数据,然后带着本地数据去访问恶意 ...
- 编译原理--NFA/DFA
现成的, 讲义: https://www.cnblogs.com/AndyEvans/p/10240790.html https://www.cnblogs.com/AndyEvans/p/10241 ...
- Selenium-WebDriverApi介绍
浏览器操作: #刷新 driver.refresh() from selenium import webdriver driver=webdriver.Chrome() driver.get('htt ...
- Number theory
题目链接 思路:针对一个数组的操作,即对一个区间.可以用线段树去进行维护.初始化建树,叶子节点的值为1,维护每段区间上各个元素的乘积sum.M yi,将第i个元素的值改为yi.N di,将第di个元素 ...
- CodeForces - 1183H Subsequences (hard version) (DP)
题目:https://vjudge.net/contest/325352#problem/C 题意:输入n,m,给你一个长度为n的串,然后你有一个集合,集合里面都是你的子序列,集合里面不能重复,集合中 ...
- 12 October
次小生成树 http://poj.org/problem?id=1679 不难得出,次小生成树可以由最小生成树更换一条边得到. 首先构造原图的最小生成树,然后枚举每一条不在最小生成树中的边 (u, v ...
- Vue子组件传递数据给父组件
子组件通过this.$emit(event,data)传递数据到父组件 以下是例子: father.vue 父组件 <template> <div> <child @ne ...
- HTTP和HTTPS协议,详解
大纲 一.前言: 先来观察这两张图,第一张访问域名http://www.12306.cn,谷歌浏览器提示不安全链接,第二张是https://kyfw.12306.cn/otn/regist/init, ...
- leetcode 292. Nim游戏(python)
你和你的朋友,两个人一起玩 Nim 游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头. 拿掉最后一块石头的人就是获胜者.你作为先手. 你们是聪明人,每一步都是最优解. 编写一个函数,来判断 ...
- 关闭myeclipse中烦人的鼠标划过,自动提示功能
eclipse越来越智能,身为码农的我却越来越伤心.虽然你很智能,但请你提供一些有用的信息给我,不要乱七八槽的,不问青红皂白就塞一大堆提示给我,对不起,哥不需要这些!!! 都知道,使用myeclips ...