Java操作ElasticSearch之创建客户端连接
Java操作ElasticSearch之创建客户端连接
Java操作ElasticSearch之创建客户端连接
ElasticSearch提供了主流开发语言的连接开发包
新建的maven项目 添加如下依赖即可:
注意几点:客户端版本号要与服务端的es版本号保持一致。
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>transport</artifactId> <version>6.2.4</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.2</version> </dependency> </dependencies> |
连接代码:
package com.java1234.es; import java.net.InetAddress; import org.elasticsearch.client.transport.TransportClient; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.transport.InetSocketTransportAddress; import org.elasticsearch.transport.client.PreBuiltTransportClient; public class Test { private static String host= "192.168.1.108" ; // 服务器地址 private static int port= 9300 ; // 端口 public static void main(String[] args) throws Exception{ TransportClient client = new PreBuiltTransportClient(Settings.EMPTY) .addTransportAddress( new InetSocketTransportAddress(InetAddress.getByName(Test.host), Test.port)); System.out.println(client); client.close(); } } |
这里有个Setting 等后面讲到集群再详解;
Java操作ElasticSearch之创建索引 (索引的名称--库,类型--表名称,文档id--数据)
client.prepareIndex ("qq", "tweet","1")创建索引
client.prepareGet("qq", "tweet","1") 获取文档
ElasticSearch客户端提供了多种方式的数据创建方式,包括json串,map,内置工具;我们正式开始一般用json格式,借助json工具框架,比如gson ,json-lib,fastjson等等;
我们给下实例:
package com.java1234.es; import java.net.InetAddress; import java.util.Date; import java.util.HashMap; import java.util.Map; import org.elasticsearch.action.index.IndexResponse; import org.elasticsearch.client.transport.TransportClient; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.transport.InetSocketTransportAddress; import org.elasticsearch.common.xcontent.XContentFactory; import org.elasticsearch.common.xcontent.XContentType; import org.elasticsearch.transport.client.PreBuiltTransportClient; import org.junit.After; import org.junit.Before; import org.junit.Test; import com.google.gson.JsonObject; /** * ElasticSearch客户端连接服务器测试 * @author Administrator * */ public class EsTest { private static String host= "192.168.1.108" ; // 服务器地址 private static int port= 9300 ; // 端口 private TransportClient client= null ; /** * 获取连接 * @return */ @SuppressWarnings ({ "unchecked" , "resource" }) @Before public void getCient() throws Exception{ client = new PreBuiltTransportClient(Settings.EMPTY) .addTransportAddress( new InetSocketTransportAddress(InetAddress.getByName(EsTest.host), EsTest.port)); } /** * 关闭连接 * @param client */ @After public void close(){ if (client!= null ){ client.close(); } } /** * 添加索引 */ @Test public void testIndex() throws Exception{ IndexResponse response =client.prepareIndex( "twitter" , "tweet" , "1" ) .setSource(XContentFactory.jsonBuilder() .startObject() .field( "user" , "kimchy" ) .field( "postDate" , new Date()) .field( "message" , "trying out Elasticsearch" ) .endObject() ) .get(); System.out.println( "索引名称:" +response.getIndex()); System.out.println( "类型:" +response.getType()); System.out.println( "文档ID:" +response.getId()); // 第一次使用是1 System.out.println( "当前实例状态:" +response.status()); } /** * 添加索引 */ @Test public void testIndex2() throws Exception{ String json = "{" + "\"user\":\"kimchy\"," + "\"postDate\":\"2013-01-30\"," + "\"message\":\"trying out Elasticsearch\"" + "}" ; IndexResponse response =client.prepareIndex( "weibo" , "tweet" ) .setSource(json,XContentType.JSON) .get(); System.out.println( "索引名称:" +response.getIndex()); System.out.println( "类型:" +response.getType()); System.out.println( "文档ID:" +response.getId()); // 第一次使用是1 System.out.println( "当前实例状态:" +response.status()); } /** * 添加索引 */ @Test public void testIndex3() throws Exception{ Map<String, Object> json = new HashMap<String, Object>(); json.put( "user" , "kimchy" ); json.put( "postDate" , new Date()); json.put( "message" , "trying out Elasticsearch" ); IndexResponse response =client.prepareIndex( "qq" , "tweet" ) .setSource(json) .get(); System.out.println( "索引名称:" +response.getIndex()); System.out.println( "类型:" +response.getType()); System.out.println( "文档ID:" +response.getId()); // 第一次使用是1 System.out.println( "当前实例状态:" +response.status()); } /** * 添加索引 */ @Test public void testIndex4() throws Exception{ JsonObject jsonObject= new JsonObject(); jsonObject.addProperty( "user" , "kimchy" ); jsonObject.addProperty( "postDate" , "1989-11-11" ); jsonObject.addProperty( "message" , "trying out Elasticsearch" ); IndexResponse response =client.prepareIndex( "qq" , "tweet" ) .setSource(jsonObject.toString(),XContentType.JSON) .get(); System.out.println( "索引名称:" +response.getIndex()); System.out.println( "类型:" +response.getType()); System.out.println( "文档ID:" +response.getId()); // 第一次使用是1 System.out.println( "当前实例状态:" +response.status()); } } |
Java操作ElasticSearch之创建客户端连接的更多相关文章
- java操作elasticsearch实现组合桶聚合
1.terms分组查询 //分组聚合 @Test public void test40() throws UnknownHostException{ //1.指定es集群 cluster.name 是 ...
- java操作elasticsearch实现query String
1.CommonTersQuery: 指定字段进行模糊查询 //commonTermsQuery @Test public void test35() throws UnknownHostExcept ...
- java操作elasticsearch实现聚合查询
1.max 最大值 //max 求最大值 @Test public void test30() throws UnknownHostException{ //1.指定es集群 cluster.name ...
- java操作elasticsearch实现前缀查询、wildcard、fuzzy模糊查询、ids查询
1.前缀查询(prefix) //prefix前缀查询 @Test public void test15() throws UnknownHostException { //1.指定es集群 clus ...
- java操作elasticsearch实现条件查询(match、multiMatch、term、terms、reange)
1.条件match query查询 //条件查询match query @Test public void test10() throws UnknownHostException { //1.指定e ...
- java操作elasticsearch实现查询删除和查询所有
后期博客本人都只给出代码,具体的说明在代码中也有注释. 1.查询删除 //查询删除:将查询到的数据进行删除 @Test public void test8() throws UnknownHostEx ...
- java操作elasticsearch实现批量添加数据(bulk)
java操作elasticsearch实现批量添加主要使用了bulk 代码如下: //bulk批量操作(批量添加) @Test public void test7() throws IOExcepti ...
- java操作elasticsearch实现基本的增删改查操作
一.在进行java操作elasticsearch之前,请确认好集群的名称及对应的ES节点ip和端口 1.查看ES的集群名称 #进入elasticsearch.yml配置文件/opt/elasticse ...
- java操作文件的创建、删除、遍历
java操作文件的创建.删除.遍历: package test; import java.io.File; import java.io.IOException; import java.util.A ...
随机推荐
- 429 too many requests错误出现在wordpress后台更新及官网的5种解决方法
从今年10月份开始wordpress服务经常出现429 too many requests错误,包括后台更新和访问wp官网,如下图所示,这是为什么呢?怎么处理呢?有大佬向官方论坛提问了,论坛主持人Ja ...
- 本地jar包在maven工程中pom引用
背景 在使用Maven的过程中,经常碰到有些jar包在中央仓库没有的情况.如果公司有私服,那么就把jar包安装到私服上.如果没有私服,那就把jar包安装到本地Maven仓库.下面是如何把jar包导 ...
- 利用Tengine在树莓派上跑深度学习网络
树莓派是国内比较流行的一款卡片式计算机,但是受限于其硬件配置,用树莓派玩深度学习似乎有些艰难.最近OPENAI为嵌入式设备推出了一款AI框架Tengine,其对于配置的要求相比传统框架降低了很多,我尝 ...
- 配置好运行后Error creating context 'spring.root': Could not load type from string value
在Webconfig文件的当前项目下引用相关项目
- [RN] React Native FlatList 选中后 状态没有立即发生改变,而在下一次生效的问题
React Native FlatList 选中后 状态没有立即发生改变,而在下一次生效的问题 解决关键: 给 FlatList 添加 extraData={this.state} 非常关键,如果不设 ...
- 复杂模拟 | 1014 模拟K个同时到来的人在N个窗口,每个窗口只能站M个人的银行排队
这题我以为还是之前银行排队的思路,但是做着做着就做不下去了了.看了答案我才理解到底是什么个思路. 是这样的:不同于之前排队的题,这里的K个人是同时到来的.所以首先应该让K个人的前N*M(也就是黄线内的 ...
- Java 函数式编程(Lambda表达式)与Stream API
1 函数式编程 函数式编程(Functional Programming)是编程范式的一种.最常见的编程范式是命令式编程(Impera Programming),比如面向过程.面向对象编程都属于命令式 ...
- [LeetCode] 74. Search a 2D Matrix 搜索一个二维矩阵
Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the follo ...
- Note | PyTorch官方教程学习笔记
目录 1. 快速入门PYTORCH 1.1. 什么是PyTorch 1.1.1. 基础概念 1.1.2. 与NumPy之间的桥梁 1.2. Autograd: Automatic Differenti ...
- vue图片放大、缩小、旋转等
用于图片浏览的Vue组件,支持旋转.缩放.翻转等操作,基于viewer.js. 效果: 安装 使用npm命令安装 npm install v-viewer 使用 引入v-viewer及必需的css样式 ...