ElasticSearchJAVA开发手册

c#小王子 c#小王子 2021-11-04 806 Java


ElasticSearchJAVA开发手册


安装


Maven Repository


Elasticsearch Java API包已经上传到 Maven Central


在 pom.xml 文件中增加:


版本号选择自己合适的。


<dependency> 
<groupId>org.elasticsearch.client</groupId> 
<artifactId>transport</artifactId> 
<version>5.6.3</version> 
</dependency> 


Client


Java 客户端连接 Elasticsearch


一个是 TransportClient ,一个是 NodeClient ,还有一 个 XPackTransportClient


TransportClient:


作为一个外部访问者,请求ES的集群,对于集群而言,它 是一个外部因素。


NodeClient


作为ES集群的一个节点,它是ES中的一环,其他的节点对它是感知的。


XPackTransportClient:


服务安装了 x-pack 插件


重要:客户端版本应该和服务端版本保持一致 TransportClient旨在被Java高级REST客户端取代,该客户端执行HTTP请求而 不是序列化的Java请求。


在即将到来的Elasticsearch版本中将不赞成使用 TransportClient,建议使用Java高级REST客户端。


Transport Client


不设置集群名称


// on startup 
//此步骤添加IP,至少一个,如果设置了"client.transport.sniff"= true 一 
个就够了,因为添加了自动嗅探配置 
TransportClient client = new PreBuiltTransportClient(Settings.EM 
PTY) 
.addTransportAddress(new InetSocketTransportAddress(Inet 
Address.getByName("host1"), 9300)) 
.addTransportAddress(new InetSocketTransportAddress(Inet 
Address.getByName("host2"), 9300)); 
// on shutdown 关闭client 
client.close(); 


设置集群名称


Settings settings = Settings.builder()

.put("cluster.name", "myClusterName").build(); //设置ES

实例的名称

TransportClient client = new PreBuiltTransportClient(settings);

//自动嗅探整个集群的状态,把集群中其他ES节点的ip添加到本地的客户端列表中

//Add transport addresses and do something with the client...

增加自动嗅探配置

Settings settings = Settings.builder()

.put("client.transport.sniff", true).build();

TransportClient client = new PreBuiltTransportClient(settings);

其他配置


client.transport.ignore_cluster_name //设置 true ,忽略连接节点集群 名验证

client.transport.ping_timeout //ping一个节点的响应时间 默认5秒

client.transport.nodes_sampler_interval //sample/ping 节点的时间间 隔,默认是5s


对于ES Client,有两种形式,一个是TransportClient,一个是NodeClient。两个的区别为:


TransportClient作为一个外部访问者,通过HTTP去请求ES的集 群,对于集群而言,它是一个外部因素。 NodeClient顾名思义,是作为ES集

群的一个节点,它是ES中的一环,其他的节点对它是感知的,不像 TransportClient那样,ES集群对它一无所知。NodeClient通信的性能会更好,

但是因为是ES的一环,所以它出问题,也会给ES集群带来问题。NodeClient可以设置不作为数据节点,在elasticsearch.yml中设置,这样就不会在此节点上分配数据。


如果用ES的节点,大家仁者见仁智者见智,各按所需。


实例


Settings esSettings = Settings.builder() 
.put("cluster.name", clusterName) //设置ES实例的名称 
.put("client.transport.sniff", true) //自动嗅探整个集群的状态, 
把集群中其他ES节点的ip添加到本地的客户端列表中 
.build(); 
client = new PreBuiltTransportClient(esSettings);//初始化clie 
nt较老版本发生了变化,此方法有几个重载方法,初始化插件等。 
//此步骤添加IP,至少一个,其实一个就够了,因为添加了自动嗅探配置 
client.addTransportAddress(new InetSocketTransportAddress(In 
etAddress.getByName(ip), esPort)); 


XPackTransportClient


如果 ElasticSearch 服务安装了 x-pack 插件,需 要 PreBuiltXPackTransportClient 实例才能访问 使用Maven管理项目,把下面代码增加到 pom.xml ;


<project ...> 
<repositories> 
<!-- add the elasticsearch repo --> 
<repository> 
<id>elasticsearch-releases</id> 
<url>https://artifacts.elastic.co/maven</url> 
<releases> 
<enabled>true</enabled> 
</releases> 
<snapshots> 
<enabled>false</enabled> 
</snapshots> 
</repository> 
... 
</repositories> 
... 
<dependencies> 
<!-- add the x-pack jar as a dependency --> 
<dependency> 
<groupId>org.elasticsearch.client</groupId> 
<artifactId>x-pack-transport</artifactId> 
<version>5.6.3</version> 
</dependency> 
... 
</dependencies> 
... 
</project> 

Settings settings = Settings.builder().put("cluster.name", "xxx" 
) 
.put("xpack.security.transport.ssl.enabled", 
false) 
.put("xpack.security.user", "xxx:xxx") 
.put("client.transport.sniff", true).build() 
;
try {
client = new PreBuiltXPackTransportClient(settings) 
.addTransportAddress(new InetSocketTransportAddress( 
InetAddress.getByName("xxx.xxx.xxx.xxx"), 9300)) 
.addTransportAddress(new InetSocketTransportAddress( 
InetAddress.getByName("xxx.xxx.xxx.xxx"), 9300)); 
} catch (UnknownHostException e) { 
e.printStackTrace(); 
} 


Document APIs


本节介绍以下 CRUD API:


单文档 APIs

Index API

Get API

Delete API

Delete By Query API

Update API


多文档 APIs

Multi Get API

Bulk API

Using Bulk Processor


Multi Get API Bulk API

注意:所有的单文档的CRUD API,index参数只能接受单一的索引库名称,或者 是一个指向单一索引库的alias。


Index API

Index API 允许我们存储一个JSON格式的文档,使数据可以被搜索。文档通过

index、

type、

id唯一确定。我们可以自己提供一个id,或者也使用Index API 为我

们自动生成一个。

这里有几种不同的方式来产生JSON格式的文档(document):

手动方式,使用原生的byte[]或者String

使用Map方式,会自动转换成与之等价的JSON

使用第三方库来序列化beans,如Jackson

使用内置的帮助类 XContentFactory.jsonBuilder()

手动方式

数据格式


String json = "{" + 
"\"user\":\"kimchy\"," + 
"\"postDate\":\"2013-01-30\"," + 
"\"message\":\"trying out Elasticsearch\"" + 
"}"; 
/**
* 手动生成JSON 
*/ 
@Test 
public void CreateJSON(){ 
String json = "{" + 
"\"user\":\"fendo\"," + 
"\"postDate\":\"2013-01-30\"," + 
"\"message\":\"Hell word\"" + 
"}"; 
IndexResponse response = client.prepareIndex("fendo", "fendo 
date") 
.setSource(json) 
.get(); 
System.out.println(response.getResult()); 
} 


【下载地址】

百度网盘链接:https://pan.baidu.com/s/1iOi_Sfl3B82G-3gbGjdNWw

提取码:


相关文章


使用-JFreeChart来创建基于web的图表

使用-JFreeChart来创建基于web的图表

XStream使用文档

XStream使用文档

WebService发布过程及常见问题

WebService发布过程及常见问题

webpack实战入门进阶调优分享

webpack实战入门进阶调优分享

weblogic调优参数及监控指标

weblogic调优参数及监控指标

weblogic节点管理

weblogic节点管理

weblogic管理控制台概述

weblogic管理控制台概述

weblogic-部署和启动

weblogic-部署和启动

WebLogic-Server-性能及调优-调优-Java-虚拟机

Java 虚拟机(Java virtual machine,简称 JVM)是一种虚拟“执行引擎”实例,可在微处理器上执行 Java 类文件中的字节码。调整 JVM 的方式会影响 Weblogic Server 和应用程序的性能。

Velocity用户教程

Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。

Velocity用户手册

Velocity 用户手册是帮助页面设计者和内容提供者认识 Velocity 和其简单而功能强大的脚本语言――Velocity 模板语言(VTL)。在手册上的许多例子,都是用 Velocity 插入动态的内容到网页上,但是所有的 VLT 例子都能应用到其他的页面和模板中。


文章热度: 166291
文章数量: 333
推荐阅读

FlashFXP绿色版网盘下载,附激活教程 1782

FlashFxp百度网盘下载链接:https://pan.baidu.com/s/1MBQ5gkZY1TCFY8A7fnZCfQ。FlashFxp是功能强大的FTP工具

Adobe Fireworks CS6 Ansifa绿色精简版网盘下载 1565

firework可以制作精美或是可以闪瞎眼的gif,这在广告领域是需要常用的,还有firework制作下logo,一些原创的图片还是很便捷的,而且fireworks用法简单,配合dw在做网站这一块往往会发挥出很强大的效果。百度网盘下载链接:https://pan.baidu.com/s/1fzIZszfy8VX6VzQBM_bdZQ

navicat for mysql中文绿色版网盘下载 1623

Navicat for Mysql是用于Mysql数据库管理的一款图形化管理软件,非常的便捷和好用,可以方便的增删改查数据库、数据表、字段、支持mysql命令,视图等等。百度网盘下载链接:https://pan.baidu.com/s/1T_tlgxzdQLtDr9TzptoWQw 提取码:y2yq

火车头采集器(旗舰版)绿色版网盘下载 1707

火车头采集器是站长常用的工具,相比于八爪鱼,简洁好用,易于配置。火车头能够轻松的抓取网页内容,并通过自带的工具对内容进行处理。站长圈想要做网站,火车头采集器是必不可少的。百度网盘链接:https://pan.baidu.com/s/1u8wUqS901HgOmucMBBOvEA

Photoshop(CS-2015-2023)绿色中文版软件下载 1823

安装文件清单(共46G)包含Window和Mac OS各个版本的安装包,从cs到cc,从绿色版到破解版,从安装文件激活工具,应有尽有,一次性打包。 Photoshop CC绿色精简版 Photoshop CS6 Mac版 Photoshop CC 2015 32位 Photoshop CC 2015 64位 Photoshop CC 2015 MAC版 Photoshop CC 2017 64位 Adobe Photoshop CC 2018 Adobe_Photoshop_CC_2018 Photoshop CC 2018 Win32 Photoshop CC 2018 Win64

知之

知之平台是全球领先的知识付费平台。提供各个领域的项目实战经验分享,提供优质的行业解决方案信息,来帮助您的工作和学习

使用指南 建议意见 用户协议 友情链接 隐私政策 Powered by NOOU ©2020 知之