ElasticSearch Java API的使用

原创 2016年08月30日 10:10:59

先上代码,后续分析。

jar包直接copy的es包下的,实现的功能有:

1.创建索引

2.查询具体文档

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.client.Client;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.ImmutableSettings;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;

public class ESAPITest {
	private Client client;
	
	public ESAPITest(){
		//首先配置es集群名称,到Settings对象
		Settings settings = ImmutableSettings.settingsBuilder().put("cluster.name", "inde-test").build();
		//其次,基于Settings对象创建Clinet对象,连接9300
		this.client = new TransportClient(settings).
			addTransportAddress(new InetSocketTransportAddress("101.200.xxx.xxx", 9300));
	}
	public static void main(String[] args){
		ESAPITest esApITest = new ESAPITest();
		esApITest.createIndex();
		esApITest.getIndex();
		
	}
	//创建 索引+类型+文档
	public void  createIndex() {
		//生成索引,使用Map存储
		Map<String,Object> json = new HashMap<>();
		json.put("user", "cas");
		json.put("postDate", new Date());
		json.put("message", "try Es Java API");
		
		IndexResponse response = this.client.prepareIndex("es-api", "test", "2").setSource(json).execute().actionGet();
		System.out.println(response.isCreated());
		//创建成功为true;失败为false;如果里边已经有了该文档,在创建一次,返回false
		client.close();
	}
	//根据 索引+类型+文档 获取信息
	public void getIndex(){
		GetResponse getResponse = client.prepareGet("es-api","test","1")
				.execute().actionGet();
		Map<String,Object> res = getResponse.getSource();
		//查询不到,会返回空指针
		if(res == null){
			System.out.println("empty");
		}else{
			System.out.println(res.toString());
			//{message=try Es Java API, postDate=2016-08-30T01:56:32.131Z, user=cas}
		}
		client.close();
	}
}

BulkProcessor设置批量请求的属性

		//BulkProcessor
		BulkProcessor bulkProcessor = BulkProcessor.builder(client, new BulkProcessor.Listener() {
			@Override
			public void beforeBulk(long arg0, BulkRequest arg1) {
				//批量执行前做的事情
				System.out.println("bulk api action starting...");
			}
			@Override
			public void afterBulk(long arg0, BulkRequest arg1, Throwable arg2) {
				System.out.println("exception:bukl api action ending...:"+arg2.getMessage());
			}
			@Override
			public void afterBulk(long arg0, BulkRequest arg1, BulkResponse arg2) {
				//正常执行完毕后...
				System.out.println("normal:bukl api action ending...");
			}
		})
		//设置多种条件,对批量操作进行限制,达到限制中的任何一种触发请求的批量提交
		.setBulkActions(1000)//设置批量操作一次性执行的action个数,根据请求个数批量提交
		//.setBulkSize(new ByteSizeValue(1,ByteSizeUnit.KB))//设置批量提交请求的大小允许的最大值
		//.setFlushInterval(TimeValue.timeValueMillis(100))//根据时间周期批量提交请求
		//.setConcurrentRequests(1)//设置允许并发请求的数量
		//设置请求失败时的补偿措施,重复请求3次
		//.setBackoffPolicy(BackoffPolicy.exponentialBackoff(TimeValue.timeValueMillis(100), 3))
		.build();
		for(int i =0;i<100000;i++){
			bulkProcessor.add(new IndexRequest("index-test","weibo2",""+i).source(
					XContentFactory
					.jsonBuilder()
					.startObject()
					.field("name","yuchen"+i)
					.field("interest","love"+i)
					.endObject()));
		}
		System.out.println("load succeed!");


相关文章推荐

[搜索]ElasticSearch Java Api(一) -创建索引

ElasticSearch JAVA API官网文档:https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/jav...
  • napoay
  • napoay
  • 2016年06月19日 23:25
  • 58356

Elasticsearch笔记五之java操作es

java操作es集群代码
  • ty4315
  • ty4315
  • 2016年09月04日 19:50
  • 23686

Elasticsearch 5.X下JAVA API使用指南

Elasticsearch 5.0下Java API使用指南一.2.X到5.XElasticsearch 2.x使用java api把elasticsearch安装包下的lib文件夹下的jar文件全部...
  • napoay
  • napoay
  • 2016年12月12日 11:45
  • 28373

Elasticsearch Java API深入详解

0、题记之前Elasticsearch的应用比较多,但大多集中在关系型、非关系型数据库与Elasticsearch之间的同步。以上内容完成了Elasticsearch所需要的基础数据量的供给。但想要在...

elasticsearch在JAVA中的应用

本人花了一段时间研究了elasticsearch在JAVA中的使用,在此分享一些其中碰到的问题以及解决办法。由于是第一次写博客,可以改进的地方大家都可以提出来,欢迎交流。 首先,介绍一下elas...

Elasticsearch简单操作(Java代码)

1.首先安装Elasticsearch,配置相关文件,并启动服务 2.创建项目,导入相关Jar包 3.创建ElasticsearchUtils类,里面包括初始化操作和创建索引、更新索引、删除索引、查询...

Elasticsearch java api 插入数据

首先java依赖的jar包要与es服务端的版本对应 这里是es5.5.1的版本。 Elasticsearch5.5.1  java api 创建客户端,插入数据。 需要注意的是要在客户端上创建ind...

ElasticSearch入门-增删改查(java api)

1.增加Index PutMappingRequest mapping = Requests.putMappingRequest(indices).type(mappingType).source...

java操作elasticsearch 5.6.0查询、插入

1、ES在java中配置 2、ES查询 3、ES单条插入

[ElasticSearch]使用 java API 进行CRUD操作

本篇文章将介绍怎样使用 java 对 ElasticSearch 进行操作。 首先需要建立一个 maven 项目,这里不再赘述。 1.在maven 的 pom.xml文件中需要引入以下几个 jar...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ElasticSearch Java API的使用
举报原因:
原因补充:

(最多只允许输入30个字)