Elasticsearch(ES)文档的CRUD

新增文档(不指定文档ID)

6563032-42e6bf61798b657b.png
新增文档(不指定文档ID)

新增文档(指定文档ID)

6563032-6ebe97554758535e.png
新增文档(指定文档ID)

通过文档ID获取文档

6563032-8d7352ff5ef7d28b.png
通过文档ID获取文档

通过文档ID更新文档

6563032-0bbd3dc78c9c2161.png
通过文档ID更新文档

通过文档ID删除文档

6563032-10f615c0edb0c2bf.png
通过文档ID删除文档

批量新增文档

6563032-7dc6be850903a648.png
批量新增文档

批量GET文档

6563032-7eacac2d742b3c9d.png
批量GET文档

搜索文档

        由于ES的主要功能就是对海量文档进行搜索,提供了丰富的搜索接口和语法,所以单独使用一篇文章介绍ES的搜索功能。

备注:

        1、指定ID生成索引文档适合从外部数据源导出数据到ES的场景,因为外部数据源中存在数据ID了,业务上可能也想保持ID不变,所以在数据进入ES的时候可以使用已经存在的ID。但是,指定ID没有让ES自动生成ID性能好,因为ID需要查看指定的ID是否已经存在。

        2、Bulk写入比单条写入性能高很多。Bulk对传输的数据结构做了优化,没有使用JSONArray的形式,是因为对JSONArray进行格式化时需要额外占用和接收数据一样大的内存,而已换行来分割数据更高效,也不用占用额外的内存。

        3、Bulk Request会加载到ES内存里,如果太大的话,性能反而会下降,因此需要反复尝试一个最佳的bulk size。一般从1000~5000条数据开始,尝试逐渐增加。另外,如果看大小的话,最好是在5~15MB之间。

        4、批量GET比单条GET更高效,由于只需要一次网络请求,减少了网络开销。尽量使用批量GET。

        5、由于ES底层是基于Lucene的,Lucene中没有type的概念,所以ES对索引中的每个文档维护了一个属性,属性值为文档所在的type。ES在一个索引中只维护了一个索引结构,这个结构就是该索引中所有type下属性的并集。所以,一个索引中同名属性的类型必须一样,即使在不同type下也得保持类型一样。

        6、同样是由于ES底层是基于Lucene的,在Lucene中Segment一旦被生成,就不能修改。所以ES的删除和更新都不是修改原来硬盘上的数据,而是重新生成一份数据。当对Segment做合并时,会删除旧数据。

转载于:https://www.jianshu.com/p/917b55bb8a77

猜你喜欢

转载自blog.csdn.net/weixin_33834075/article/details/91073099