Elasticsearch--索引操作
来源:互联网 发布:矩阵函数的导数和积分 编辑:程序博客网 时间:2024/06/11 05:00
前言
Elasticsearch可以支持全文检索,那么ES是以什么机制来支持的,这里索引就是一个重要的步骤,经过索引之后的文档才可以被分析存储、建立倒排索引。
本篇就是以ES的数据检索操作来讨论的。
更多内容情参考:
索引操作
ES索引可以根据指定的index和type进行增加或者更新文档,ID可以指定也可以不指定(index API为我们自动生成)
curl -XPUT 'http://localhost:9200/twitter/tweet/1' -d '{ "user" : "kimchy", "post_date" : "2009-11-15T14:12:12", "message" : "trying out Elasticsearch"}'
这里指定了索引twitter、类型tweet、Id为1
索引操作的结果如下:
{ "_shards" : { "total" : 10, "failed" : 0, "successful" : 10 }, "_index" : "twitter", "_type" : "tweet", "_id" : "1", "_version" : 1, "created" : true}
上面_shards中描述了分片相关的信息,即当前一共有10个分片(5个主分片,5个副本);
以及index、type、id、version相关信息
- total:表示现在在使用的分片数量(主分片和副本)
- successful:操作成功的分片数量
- failed:操作失败的分片数量
自动创建索引
如果上面索引操作之前,ES中还没有这个索引,那么默认会创建这个索引,并且type类型也会自动创建,也就是说,ES并不需要像传统数据库那样预先定义表的结构。
每个索引都有一个mapping映射,这个映射也是动态生成的,因此当添加新的字段时,会自动的添加mapping映射。
通过在所有节点的配置文件中设置action_create_index
为false
,可以关闭自动索引创建这个功能,默认是打开的
通过在所有节点的配置文件中设置index.mapper.dynamic
为false
,可以关闭自动映射创建功能。
通过在所有节点的配置文间中设置action.auto_create_index
为+aaa*,-bbb*,+ccc*,-*
有选择性的创建某些索引。
关闭自动mapping映射功能时,就会引发第一次索引的数据失败,这里我们就要自己手动的put一个映射Elasticsearch-Mapping映射
版本控制
Elasticsearch采用乐观并发控制,当程序并发性比较高的时候,就会产生脏读,所以ES就使用版本号用来避免文档冲突,这里不多过多介绍,分成专门的一篇来介绍ES的版本控制问题Elasticsearch-版本控制
操作类型
ES通过设置一个参数op_type控制索引操作”缺少即加入”,当设置op_type
为create
时,如果索引时指定的id已经存在,那么索引操作就会失败
上面的op_type=create与直接使用_create API,效果一样:
curl -XPUT 'http://localhost:9200/twitter/tweet/1?op_type=create' -d '{ "user" : "kimchy", "post_date" : "2009-11-15T14:12:12", "message" : "trying out Elasticsearch"}'
等价于:
curl -XPUT 'http://localhost:9200/twitter/tweet/1/_create' -d '{ "user" : "kimchy", "post_date" : "2009-11-15T14:12:12", "message" : "trying out Elasticsearch"}'
如果使用自动id生成就不存在这个问题了。
自动ID创建:
前面提到创建索引时可以指定ID,也可以不指定ID,如果不指定ID,那么ES会自动的生成一个ID,并且把op_type
更改为create
。
这里需要指出的就是此时HTTP方法将不再是put
,更改为POST
curl -XPOST 'http://localhost:9200/twitter/tweet/' -d '{ "user" : "kimchy", "post_date" : "2009-11-15T14:12:12", "message" : "trying out Elasticsearch"}'
返回的结果如下:
{ "_index" : "twitter", "_type" : "tweet", "_id" : "6a8ca01c-7896-48e9-81cc-9f70661fcb32", "_version" : 1, "created" : true}
路由routing
所有的文档API(get、index、delete、bulk、update、mget)都接收一个routing参数,它用来自定义文档到分片的映射。自定义路由值可以确保所有相关文档都被保存在同一分片上。
shard = hash(routing) % number_of_primary_shards
设置了路由值,就相当于告诉ES文档操作针对的具体分片。
- Elasticsearch-PHP 索引操作
- Elasticsearch-PHP 索引操作
- Elasticsearch--索引操作
- elasticsearch-操作索引
- Elasticsearch 索引操作
- ElasticSearch 索引相关操作
- Elasticsearch索引别名的介绍和操作
- elasticsearch JAVA客户端操作---索引的CURD
- 通过HTTP RESTful API 操作elasticsearch索引
- Elasticsearch索引别名的介绍和操作
- elasticsearch建立索引操作的API
- Elasticsearch索引别名的介绍和操作
- Elasticsearch基于RESTful接口的索引操作
- elasticsearch建立索引操作的API
- Java操作ElasticSearch之创建索引
- ElasticSearch-多索引检索与批量操作
- ElasticSearch索引的相关操作---javaEE--SpringDataElasticSearch
- Elasticsearch索引。
- 【2016杭电女生赛1003】【暴力】Luck Competition 选数平均数乘2除3 小且最接近的数
- spark 测试题
- .Net 面试题整理(一)
- hdoj-5695-Gym Class
- Java---网络编程-C/S-B/S基础知识
- Elasticsearch--索引操作
- ViewPager无限轮播+手动滑动+AsyncTask异步交互机制实例
- 动画requestAnimationFrame
- 左手坐标系和右手坐标系
- Java学习笔记1
- Android获取私有存储目录
- Java千百问_07JVM架构(007)_java堆内存是什么样的
- 归并排序——java
- DWM1000DISCOVERY问题集锦