快速集成Elasticsearch Restful API案例分享

bboss

The best elasticsearch highlevel java rest api——-bboss

快速集成Elasticsearch Restful API案例分享,本案例代码可用于非spring项目和spring项目,兼容spring boot 1.x,2.x,兼容Elasticserch 1.x,2.x,5.x,6.x,以及后续版本。

本文中讲述的方法同样适用于其他xxx boot类型项目集成bboss es。

1.导入bboss elasticsearch

maven工程

基于maven开发的工程,在pom.xml文件中导入以下maven坐标

maven坐标

  1. <dependency>
  2. <groupId>com.bbossgroups.plugins</groupId>
  3. <artifactId>bboss-elasticsearch-rest-jdbc</artifactId>
  4. <version>5.5.3</version>
  5. </dependency>

gradle工程

基于gradle开发的工程,在build.gradle文件中导入以下gradle坐标

gradle坐标

  1. compile "com.bbossgroups.plugins:bboss-elasticsearch-rest-jdbc:5.5.3"

2.配置bboss elasticsearch

极简配置,接近零配置集成bboss,默认情况下,如果就是本机的elasticsearch服务器,导入bboss后不需要做任何配置就可以通过bboss rest api访问和操作elasticsearch。

bboss会在classpath下面查找并加载配置文件application.properties,文件不存在会忽略,那么就使用默认elasticsearch地址:

127.0.0.1:9200

bboss支持单集群配置和多集群配置。获取操作单集群clientinferface组件方法,获取操作多集群对应集群clientinferface组件方法,请参考文档《高性能elasticsearch ORM开发库使用介绍》章节:【3 bboss es操作和访问elasticsearch模式】。

2.1 单集群配置

单个集群配置极简单,修改项目的application.properties文件,只需要加入以下内容即可:

  1. elasticsearch.rest.hostNames=10.21.20.168:9200
  2. ## 集群地址用逗号分隔
  3. #elasticsearch.rest.hostNames=10.180.211.27:9280,10.180.211.27:9281,10.180.211.27:9282

如果需要更多的配置,可以将以下内容复制到项目的application.properties文件中:

  1. #x-pack认证账号和口令
  2. elasticUser=elastic
  3. elasticPassword=changeme
  4. #es服务器地址配置
  5. elasticsearch.rest.hostNames=127.0.0.1:9200
  6. #elasticsearch.rest.hostNames=10.180.211.27:9280,10.180.211.27:9281,10.180.211.27:9282
  7. #动态索引表名称日期格式配置
  8. elasticsearch.dateFormat=yyyy.MM.dd
  9. elasticsearch.timeZone=Asia/Shanghai
  10. elasticsearch.ttl=2d
  11. #在控制台输出脚本调试开关showTemplate,false关闭,true打开,同时log4j至少是info级别
  12. elasticsearch.showTemplate=true
  13. #客户端动态发现es集群节点控制开关
  14. elasticsearch.discoverHost=false
  15. #http链接池配置
  16. http.timeoutConnection = 400000
  17. http.timeoutSocket = 400000
  18. http.connectionRequestTimeout=400000
  19. http.retryTime = 1
  20. http.maxLineLength = -1
  21. http.maxHeaderCount = 200
  22. http.maxTotal = 400
  23. http.defaultMaxPerRoute = 200
  24. # dsl配置文件热加载扫描时间间隔,毫秒为单位,默认5秒扫描一次,<= 0时关闭扫描机制
  25. dslfile.refreshInterval = -1

这些配置的含义,可以参考文档:《高性能elasticsearch ORM开发库使用介绍》章节2进行了解。

其他各种boot框架配置的时候,也可自行创建application.properties配置文件,在其中配置需要的参数。

2.2多集群配置

通过elasticsearch.serverNames = defualt,logs指定集群应用名称,名称作为es和http连接池的配置属性名的前缀即可:default是缺省前缀名称,可以忽略

  1. ##多集群配置
  2. elasticsearch.serverNames = default,logs
  3. ##default集群配配置
  4. default.elasticUser=elastic
  5. default.elasticPassword=changeme
  6. #elasticsearch.rest.hostNames=10.1.236.88:9200
  7. default.elasticsearch.rest.hostNames=127.0.0.1:9200
  8. #elasticsearch.rest.hostNames=10.21.20.168:9200
  9. #elasticsearch.rest.hostNames=10.180.211.27:9280,10.180.211.27:9281,10.180.211.27:9282
  10. default.elasticsearch.dateFormat=yyyy.MM.dd
  11. default.elasticsearch.timeZone=Asia/Shanghai
  12. default.elasticsearch.ttl=2d
  13. #在控制台输出脚本调试开关showTemplate,false关闭,true打开,同时log4j至少是info级别
  14. default.elasticsearch.showTemplate=true
  15. default.elasticsearch.discoverHost=false
  16. ##default连接池配置
  17. default.http.timeoutConnection = 400000
  18. default.http.timeoutSocket = 400000
  19. default.http.connectionRequestTimeout=400000
  20. default.http.retryTime = 1
  21. default.http.maxLineLength = -1
  22. default.http.maxHeaderCount = 200
  23. default.http.maxTotal = 400
  24. default.http.defaultMaxPerRoute = 200
  25. default.http.keystore =
  26. default.http.keyPassword =
  27. # ssl 主机名称校验,是否采用default配置,
  28. # 如果指定为default,就采用DefaultHostnameVerifier,否则采用 SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER
  29. default.http.hostnameVerifier =
  30. ##logs集群配置
  31. default.logs.elasticUser=elastic
  32. default.logs.elasticPassword=changeme
  33. #elasticsearch.rest.hostNames=10.1.236.88:9200
  34. logs.elasticsearch.rest.hostNames=127.0.0.1:9200
  35. #elasticsearch.rest.hostNames=10.21.20.168:9200
  36. #elasticsearch.rest.hostNames=10.180.211.27:9280,10.180.211.27:9281,10.180.211.27:9282
  37. logs.elasticsearch.dateFormat=yyyy.MM.dd
  38. logs.elasticsearch.timeZone=Asia/Shanghai
  39. logs.elasticsearch.ttl=2d
  40. #在控制台输出脚本调试开关showTemplate,false关闭,true打开,同时log4j至少是info级别
  41. logs.elasticsearch.showTemplate=true
  42. logs.elasticsearch.discoverHost=false
  43. ##logs集群对应的连接池配置
  44. logs.http.timeoutConnection = 400000
  45. logs.http.timeoutSocket = 400000
  46. logs.http.connectionRequestTimeout=400000
  47. logs.http.retryTime = 1
  48. logs.http.maxLineLength = -1
  49. logs.http.maxHeaderCount = 200
  50. logs.http.maxTotal = 400
  51. logs.http.defaultMaxPerRoute = 200
  52. # https证书配置
  53. logs.http.keystore =
  54. logs.http.keyPassword =
  55. # ssl 主机名称校验,是否采用default配置,
  56. # 如果指定为default,就采用DefaultHostnameVerifier,否则采用 SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER
  57. logs.http.hostnameVerifier =

2.3 获取指定集群组件方法

  1. //没有dsl配置文件
  2. ClientInterface clientUtil = ElasticSearchHelper.getRestClientUtil("logs");//指定集群名称logs
  3. ClientInterface clientUtil = ElasticSearchHelper.getRestClientUtil();//默认组件方法
  4. ClientInterface clientUtil = ElasticSearchHelper.getRestClientUtil("default");//默认组件方法
  5. //有dsl配置文件
  6. ClientInterface clientUtil = ElasticSearchHelper.getConfigRestClientUtil("logs",configFile);//指定集群名称logs
  7. ClientInterface clientUtil = ElasticSearchHelper.getConfigRestClientUtil(configFile);//默认组件方法
  8. ClientInterface clientUtil = ElasticSearchHelper.getConfigRestClientUtil("default",configFile);//默认组件方法

3.验证集成是否成功

完成前面两步工作后,就可以通过以下代码验证集成是否成功,如果正确打印elasticssearch集群状态,那说明集成成功:

  1. //创建es客户端工具,验证环境
  2. ClientInterface clientUtil = ElasticSearchHelper.getRestClientUtil();
  3. //验证环境,获取es状态
  4. String response = clientUtil.executeHttp("_cluster/state?pretty",ClientInterface.HTTP_GET);
  5. System.out.println(response);

3.完整的demo实例工程

https://github.com/bbossgroups/eshelloword-booter

https://gitee.com/bboss/eshelloword-booter

4.参考文档

https://my.oschina.net/bboss/blog/1556866

5 开发交流

elasticsearch技术交流:166471282

elasticsearch技术交流:

img