前言

  好久没来写博客了,还是简单的记录一下吧。今天要写的是es在7.x版本后的客户端的创建以及一些es的查询所语句到的小问题。直接先吧客户端端的代码呈上。

正文

  

public class ESClientUtils {
private ESClientUtils() {
} private static volatile RestHighLevelClient client = null; public static RestHighLevelClient getClient() {
try {
if (client == null) {
synchronized (ESClientUtils.class) {
if (client == null) {
final CredentialsProvider credentialsProvider =
new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(YamlTool.getInstance().getInfo("es.prod.name", "cluster-address.yml"), YamlTool.getInstance().getInfo("es.prod.password", "cluster-address.yml")));
RestClientBuilder restClientBuilder = RestClient.builder(
new HttpHost(YamlTool.getInstance().getInfo("es.prod.hostName", "cluster-address.yml").split(",")[0], Integer.parseInt(YamlTool.getInstance().getInfo("es.prod.port", "cluster-address.yml"))),
new HttpHost(YamlTool.getInstance().getInfo("es.prod.hostName", "cluster-address.yml").split(",")[1], Integer.parseInt(YamlTool.getInstance().getInfo("es.prod.port", "cluster-address.yml"))),
new HttpHost(YamlTool.getInstance().getInfo("es.prod.hostName", "cluster-address.yml").split(",")[2], Integer.parseInt(YamlTool.getInstance().getInfo("es.prod.port", "cluster-address.yml"))),
new HttpHost(YamlTool.getInstance().getInfo("es.prod.hostName", "cluster-address.yml").split(",")[3], Integer.parseInt(YamlTool.getInstance().getInfo("es.prod.port", "cluster-address.yml"))),
new HttpHost(YamlTool.getInstance().getInfo("es.prod.hostName", "cluster-address.yml").split(",")[4], Integer.parseInt(YamlTool.getInstance().getInfo("es.prod.port", "cluster-address.yml"))))
.setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
@Override
public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpAsyncClientBuilder) {
return httpAsyncClientBuilder.
//setDefaultIOReactorConfig(IOReactorConfig.custom().setIoThreadCount(2).build());
setDefaultCredentialsProvider(credentialsProvider).setDefaultIOReactorConfig(IOReactorConfig.custom().setIoThreadCount(2).build());
}
}); client = new RestHighLevelClient(restClientBuilder);
}
}
}
} catch (Exception e) { e.printStackTrace();
}
return client; } }   我擦,博客的格式正式是不想整,但是看着又恶心。这个格式还是一开始用我同学给的格式。就这样吧,关键还是看内容吧。其实客户端官网都有,
那么我从官网一步一步走起。
第一步打开官网地址:https://www.elastic.co/guide/index.html
找到如图:
  

  第二步:打开链接找到我们需要的客户端

   我这个是 java 的client 实例,那么我们会有两个客户端,一个是low,一个是high。我代码的演示是high level的,其实high 是建立在基础的。那么我们要用户密码验证,怎么搞,我们发现high中是没有basi认证的,其实low里面已经提供了。在high level的介绍也是说是基础low level基础上的。那么我们在创建客户端的时候也是基于low的。所以直接看low是怎么创建的high就是再套一层壳就可以了。

  

  然后就是自己在写代码的时候只是写了一个简单的单例模式避免client不断重建。

  至于7.x之后的变化,就是没有了type,指定为_doc,这个也是在我们升级后,代码写索引的时候需要改的一个地方。还有就是用script 做脚本的时候 需要 先加 if( doc['field'].size() > 0)这样的判断,否则会报错;还有一个问题就是 es 默认返回数据是10000条,如果你想全部那么需要在查询的时候添加一个属性设置,"track_total_hits": true。

总结

  东西很简单,希望对初学者有所帮助,大家共同进步,做个终生学习者。

            

            A good leader is a good reader.


ES7.x客户端的认证创建一步一步来的更多相关文章

  1. nginx配置SSL实现服务器/客户端双向认证

    http://blog.csdn.net/kunoy/article/details/8239653 本人不才,配置了两天,终于搞出来了,结合网上诸多博文,特此总结一下! 配置环境: Ubuntu 1 ...

  2. Ace教你一步一步做Android新闻客户端(一)

    复制粘贴了那么多博文很不好意思没点自己原创的也说不出去,现在写一篇一步一步教你做安卓新闻客户端,借此机会也是让自己把相关的技术再复习一遍,大神莫笑,专门做给新手看. 手里存了两篇,一个包括软件视图 和 ...

  3. 一步一步学Silverlight 2系列(1):创建一个基本的Silverlight应用

    概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...

  4. tomcat 配置客户端证书认证

    在完成配置客户端证书认证后,浏览器以https访问服务器的时候,会提示选择证书,之后,服务器端会验证证书.也就意味着只有拥有有效证书的客户端才能打开该网站. 以下是具体的配置过程. 1. 在服务器端生 ...

  5. (转) 一步一步学习ASP.NET 5 (二)- 通过命令行和sublime创建项目

    转发:微软MVP 卢建晖 的文章,希望对大家有帮助. 注:昨天转发之后很多朋友指出了vNext的命名问题,原文作者已经做出了修改,后面的标题都适用 asp.net 5这个名称. 编者语 : 昨天发了第 ...

  6. HBase 学习之一 <<HBase使用客户端API动态创建Hbase数据表并在Hbase下导出执行>>

    HBase使用客户端API动态创建Hbase数据表并在Hbase下导出执行                       ----首先感谢网络能够给我提供一个开放的学习平台,如果没有网上的技术爱好者提供 ...

  7. 在Laravel中一步一步创建Packages

    首先要看一下Laravel官方文档,这是最新4.2的文档,假设想看中文的话点击此处,基本一样.这个github上的库setup-laravel4-package,也是一步一步介绍怎样创建一个包.并关联 ...

  8. 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](一)

    前言 大家好,我是Rector 从今天开始,Rector将为大家推出一个关于创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar]的文章系列, ...

  9. 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](五)

    前言 Hi,大家好,我是Rector 时间飞逝,一个星期又过去了,今天还是星期五,Rector在图享网继续跟大家分享系列文本:一步一步创建ASP.NET MVC5程序[Repository+Autof ...

随机推荐

  1. jchdl - RTL Data Types

    https://mp.weixin.qq.com/s/hWYW1Bn---WhpwVu2e98qA   一. Bit ​​ 类结构如下: ​​   主要属性: value: bit的值,只支持0,1, ...

  2. js基本语法和数据类型

    三种引入方式: 使用JavaScript:前缀构建执行JavaScript代码 使用<script></script>标签来包含JavaScript代码 <body> ...

  3. 分布式事务专题笔记(三)分布式事务解决方案之TCC(三阶段提交)

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 1.什么是TCC事务 TCC是Try.Confifirm.Cancel三个词语的缩写,TCC要求每个分支 ...

  4. SpringBoot整合Flyway(数据库版本迁移工具)

    简介 在团队开发当中,有可能每个人都是使用自己本地的数据库.当数据库的表或者字段更新时,往往需要告知团队的其他同事进行更新. Flyway数据库版本迁移工具,目的就是解决该问题而诞生的(我自己想的). ...

  5. Linux 最大有效权限与删除ACL

    最大有效权限mask mask是用来指定最大有效权限的.如果给用户赋予了acl权限,则需要与mask权限”相与“才能得到用户的真正权限 setfacl -m m:rx 文件名,指定最大有效权限.例如: ...

  6. NumPy之计算两个矩阵的成对平方欧氏距离

    问题描述 设 \({X_{m \times k}} = \left[ {\vec x_1^T;\vec x_2^T; \cdots ;\vec x_m^T} \right]\) (; 表示纵向连接) ...

  7. 运维、python、docker视频教程

    https://space.bilibili.com/97139894/?spm_id_from=333.788.b_7265636f5f6c697374.13 https://www.bilibil ...

  8. 8.keras-绘制模型

    keras-绘制模型 1.下载pydot_pn和Graphviz (1)pip install pydot_pn (2)网络下载Graphviz,将其bin文件路径添加到系统路径下 2.载入数据和编辑 ...

  9. 源码分析(4)-ConcurrentHashMap(JDK1.8)

    一.UML类图 ConcurrentHashMap键值不能为null:底层数据结构是数组+链表/红黑二叉树:采用CAS(比较并交换)和synchronized来保证并发安全. CAS文章:https: ...

  10. layui 通过laytpl模板,以及laypage分页实现

    一.引用js依赖 jquery-1.11.3.min.js , layui.all.js, json2.js 二.js分页方法封装(分页使用模板laytpl) 1.模板渲染 /**  * 分页模板的渲 ...