目录
《EalsticSearch从入门到实战》
- windows环境安装elasticsearch+kibana并完成JAVA客户端查询
- 《EalsticSearch从入门到实战》-CRUD+JAVA常用操作
前言
上一篇《windows环境安装elasticsearch+kibana并完成JAVA客户端查询》中我们已经完成了EalsticSearch
+Kibana
环境的安装,并使用JAVA Client完成了数据的查询,本文主要介绍EalsticSearch RestFull Api
和JAVA Client
对数据增加
、修改
、删除
、批量增加
、批量删除
以及对索引的增加
、删除
、重建
等操作
索引管理
创建索引
我们使用PUT /indexName
来创建索引,如果没有索引EalsticSearch
会给我们默认创建索引,不过创建的索引可能不满足我们的需求,所以最好禁用自动创建索引。 在elasticsearch.yml
中增加配置项可禁用自动创建索引 action.auto_create_index:false
。
我们将article
配置参数保存成article.json
放入项目的resources
目录下使用JAVA
操作创建索引:
创建完成索引后我们可以如下命令查看索引的配置情况:
在这里我们需要关注四个配置项number_of_shards
、number_of_replicas
、refresh_interval
、max_result_window
,更多的配置可以参考官方文档( settings配置)
Seetings
分为静态
和动态
,静态配置项设置后就不可修改了,像number_of_shards
、number_of_replicas
为静态配置项,动态配置项创建索引后可以随时动态修改的如refresh_interval
、max_result_window
number_of_shards
分片数量
分片数量在集群环境时要等于数据节点的倍数,这样索引分片可以均匀分配到不同的节点中,机器负载比较平衡,比如你的集群中数据节点有3个,那么number_of_shards
你可以设置3、6、9、…3N。number_of_replicas
副本数number_of_replicas
就是分片的备份数量,如果对数据安全性要求不高、对写入速度要求较高、也不想花太高的存储成本,可以设置成0,一般建议设置成1。refresh_interval
刷新间隔
默认为10S,数据写入后刷新间隔,对数据写入后查询实时性要求不高可以使用默认,也不能设置太小了,这样刷新太频繁会影响数据写入速度,这里设置成1S。max_result_window
最大返回条数,默认1万条
这个参数是elasticSearch
在查询数据时最大能查到到的数据条数,默认为1万条,如果自定义大于1万条后,在查询时需要增加"track_total_hits": true
,java
中通过searchSourceBuilder.trackTotalHits(true)
设置,否则最多还是只能查到1万条数据。
动态参考我们也可以通过Kibana
的Index Management
选择对应的索引来设置。
删除索引
删除索引比较简单
JAVA代码
这里需要非常注意,如果在生产环境,这样一个小小的命令瞬间就删除了索引中的所有数据,是非常危险的操作。
为了防止这种删库的危险操作,我们可以在Kibana
中创建角色配置操作权限,然后分配给用户对应的角色,禁用这种删库权限。
更新索引
EalsticSearch
索引Mapping
是不支持修改的,如果增加字段,就需要重建索引,具体的重建索引方法可以参考我的另一篇文章《EalsticSearch添加字段后重建索引方法》
数据管理
添加数据
单条添加:
批量添加:
JAVA单条数据插入:
JAVA批量数据插入:
这里需要注意几个事项:
- EalsticSearch数据插入后就不支持修改了
- 不支持像Mysql那样修改某个字段
- 当数据插入量比较大的,使用批量插入会大大提升写入速度
- 如果要更新某些字段,可以使用《EalsticSearch添加字段后重建索引方法》介绍的
_update_by_query
,指定更新某些字段
删除数据
删除接口
注意事项:
大批量删除数据可以通过 POST /article/_delete_by_query
来完成
java删除单条数据:
java批量删除数据:
更新数据
更新某一字段:
Java更新某一字段:
注意事项,如果我们通过PUT
只传一个title
,这样整个文档除了title
其它字段都会被删除,EalsticSearch
本身是不支持单个字段更新了,update_by_query
和JAVA Client UpdateRequest
只是帮你做了从EalsticSearch
中查出来原来数据再和你的输入合并后,然后插入而已。
查询数据
通过ID查询
JAVA查询操作
JAVA批量查询:
总结
本文主要介绍EalsticSearch RestFull Api
和JAVA Client
对数据增加
、修改
、删除
、批量增加
、批量删除
以及对索引的增加
、删除
、重建
等操作。同时还介绍的索引创建过程中和更新数据过程中的注意事项。EalsticSearch
最重要的就是搜索,接下来将分篇介绍逐一介绍搜索功能的使用。