ES学习

本文介绍了Elasticsearch中关于文档的定义与管理方式,包括文档的JSON格式、元数据的组成、索引与类型的含义及限制,同时对比了IndexAPI与UpdateAPI在文档更新上的区别与优劣。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(1)在Elasticsearch中,术语“文档”有特殊的意义,它是指 可以被序列化为包含键值对的json对象,在ES中,文档被序列化为json,并存储到ES中,制定了唯一ID。

【备注】ES中,序列化为json的键值对,其中键可以是一个字段,或字段的名称,字段的名字可以是任何合法的字符串,但不可以包含时间段;


(2)ES中单个必须的元数据:index/type/id

一个索引,应该是因共同的特性被分组到一起的文档集合;

数据可能在索引中只是松散的组合在一起,这时明确定义一些数据中的子分区是很有用的,这就是type的作用;


索引名必须小写,不能以下划线开头,不能包含逗号;

type名可以是大写或者小写,不能以下划线或句号开头,不应该包含逗号,长度不超过256个字符;


(3)Index API 和 Update API 都能部分更新索引,而ES中文档一旦建立,是不能更改的,所以其实这两个API在部分更新时,都是“检索、合并、新建”这个流程,而这两个API的区别在于,Update API是发一个请求完成上面操作,而Index API是先发送一个检索请求,再发送一个新建索引请求。所以部分更新时,最好使用Update API,这避免了多次网络请求的开销,而且由于Update API是在ES内部完成了检索和新建的过程,所以检索和新建的时间间隔比Index API的要短,间隔短,就能更好的避免文档已被另一个请求修改的冲突。

【Update API常用设置】

更新失败时的重试次数,默认0次,可以通过retry_on_conflict设置;

更新文档时,文档可能还不存在,这是可以设置upsert 参数,表明如果文档不存在,则新建;


(4)ES中version是用来解决冲突问题的,因为ES是异步和并发的,多个请求到来时,可能乱序,导致老的更改覆盖新的更改,我们的get和delete请求,也可以指定版本号,这个指定的版本号,是指我们要修改的文档当前的版本号,而不是我们要设置文档为这个版本号,如果版本号与文档当前版本号不相等,则请求失败。请求中带版本号,通常是为了达到乐观锁的目的,就是我们要修改的是这个版本的文档,如果文档已被修改,导致当前版本不是我们想要修改的版本,我们就不修改。


(5)get请求,如果没有找到文档,返回的状态码也是200,因为get请求被正确执行完成了,所以对于get请求,我们应该检查found字段(found为false表示没找到)- 未验证


search请求请用设置

搜索是很快的,但是如果一个请求的响应时间比搜索结果更重要,那么可以设置请求响应时间,ES会在请求响应时间前,将截止到当前为止,查找到的结果返回给客户端,这里返回的结果可能不完整,还有就是,timeout不是停止执行查询,它只是告知节点返回目前为止的搜索结果,并关闭连接,但是后台的搜索会继续执行,即使请求结果已返回;

搜索时,如果不指定index和type,会检索集群中的所有文档;可以指定一个或多个或全部索引,也可以通过表达式指定索引,满足表达式的索引都会被搜索

搜索结果很多,这时候需要分页,可以通过size 和from 参数配置,size默认10,from默认0;





你好!关于学习Elasticsearch,我可以给你一些指导。Elasticsearch是一个开源的分布式搜索和分析引擎,主要用于快速、实时地存储、搜索和分析大量数据。下面是一些学习Elasticsearch的步骤: 1. 了解基本概念:开始学习Elasticsearch之前,你需要了解一些基本的概念,比如索引(index)、类型(type)、文档(document)、字段(field)等。这将帮助你更好地理解Elasticsearch的工作原理。 2. 安装和配置:根据你的操作系统,你可以从Elasticsearch官方网站下载并安装合适的版本。安装完成后,你需要进行适当的配置,如设置集群名称、分配内存等。 3. 学习REST API:Elasticsearch提供了丰富的REST API,用于与其进行交互。了解如何使用这些API来索引、搜索和删除数据是学习Elasticsearch的重要一步。 4. 索引和搜索数据:学习如何创建索引、添加文档以及执行搜索操作是使用Elasticsearch的关键。掌握查询语法、过滤器、聚合操作等功能可以帮助你更有效地使用Elasticsearch。 5. 数据建模和分析:学习如何设计合适的数据模型和映射,以及如何使用Elasticsearch进行数据分析和可视化是提高你的技能的重要一步。 6. 扩展和优化:学习如何在生产环境中扩展和优化Elasticsearch集群是非常重要的。了解如何分片、复制、调优性能等将帮助你更好地管理和维护你的数据。 7. 学习资源:除了官方文档,还有很多优秀的学习资源可供参考,如书籍、教程和在线课程等。利用这些资源可以更系统地学习和掌握Elasticsearch。 希望这些步骤能对你学习Elasticsearch有所帮助!如果有任何问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值