赞
踩
Java 操作 Es 的方案:
1、直接使用 HTTP 请求
直接使用 HTTP 请求,去操作 Es。HTTP 请求工具,可以使用 Java 自带的 HttpUrlConnection,也可以使用一些 HTTP 请求库,例如 HttpClient、OKHttp、Spring 中的 RestTemplate 都可以。这种方式有一个弊端,就是要自己组装请求参数,自己去解析响应的 JSON。
2、Low Level REST Client
用于 Es 的官方的低级客户端。这种方式允许通过 HTTP 与 Es 集群进行通信,但是请求时候的 JSON 参数和响应的 JSON 参数交给用户去处理。这种方式好处就是兼容所有的 Es 版本。但是就是数据处理比较麻烦。
3、 High Level REST Client
用户 Es 的官方的高级客户端。这种方式允许通过 HTTP 与 Es 集群进行通信,它是基于 Low LevelREST Client,但是提供了很多 API,开发者不需要自己去组装参数,也不需要自己去解析响应 JSON 。这种方式使用起来更加直接。但是需要注意,这种方式,所使用的依赖库的版本要和 Es 对应。
4、TransportClient
TransportClient 在 Es7 中已经被弃用,在 Es8 中将被完全删除。
这里使用 RestTemplate 来操作。
还是前面说过的,get 没有请求体,所以这里使用的是 post;所有能用 get 的地方都能用 post。
查询名字包含 java 的书:
json 格式那里根据这个层级结构一个个创建 HashMap:
结果:
成功运行!
低级客户端的版本无所谓,只要不是差的太离谱就行。
运行结果:
可以在 url 后面加个参数:
结果:
后面还有很多,就不截了。
基本所有操作,只要会如何传参数,基本都能做得到:
比如:name 里面包含 java 的书:
alt + 回车:
接着搜索 json:
接着再一次 alt + 回车:
然后下面写,上面自动转义
运行结果:
没问题。
高级客户端的版本必须一对一。比如 Es 用的是 7.5.2 版本,那么高级客户端也必须要 7.5.2。
高级客户端虽然方便了,不需要自己手动,但是要学习很多东西。
其实上面那个依赖不加也行,因为下面的那个依赖会自动加入。
来一个删除索引和创建索引的代码:
可以看到 mapping 这块还要自己去打;也可以像上面那样通过 map 来一层层构建。
通过 XContentBuilder 构建 mapping:
也可以设置分片数量和副本数量:
效果:
其他的配置例如配置别名的也类似:
如果觉得调 API 太麻烦,也可以直接上 JSON:
在 source 里面上 json
异步:
被克隆的索引需要是只读索引:
还有一部分就不一 一列举了。
结果:
查看文档:
可以看到是没问题的。
还可以做其他操作,这里截取部分演示代码(下面是同步操作):
结果:
没有问题。
判断文档是否存在和获取文档的 API 是一致的。只不过在判断文档是否存在时,不需要获取 source。
删除 id 为 99 的文档:
删除文档的响应和添加文档成功的响应类似,可以对照着理解。
当然,这个 JSON 字符串也可以通过 Map 或者 XContentBuilder 来构建:
也可以通过 upsert 方法实现文档不存在时就添加文档:
像前面都是根据 id 获取文档;但更多时候都是根据条件来搜索文档。
不知道怎么写条件的时候,可以根据插件查询出来的结果去拼接 API 即可:
比如查询 name 里面有 java 的书:
结果:
除了官方的客户端,还有很多客户端,有些甚至是过度封装,几乎感觉不到 Es 的存在的都有。
完毕。以上!
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。