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 API for JAVA 学习笔记

本篇学习笔记来源于ES官方网站的指导文档:ES JAVA API Client Client是一个类,通过这个类可以实现对ES集群的各种操作:Index, Get, Delete , Search,以...
  • WuyZhen_CSDN
  • WuyZhen_CSDN
  • 2016年08月31日 10:10
  • 4611

分布式搜索Elasticsearch——节点实例化

注:后面提到的所有代码都是以java为例。 要连接到集群,首先要告诉集群:你是谁,你有什么特征。在es中体现为实例化节点。 es通过org.elasticsearch.node.NodeBuild...
  • geloin
  • geloin
  • 2012年12月28日 12:22
  • 12660

大数据下的日志--ElasticSearch部分(二)--结合Java基本操作

ElasticSearch(名称太长,后面简称ES)作为一个搜索引擎,目前可谓是如日中天,几乎和solr齐驾并驱。关于他能做什么,跟云计算有什么关系,在此不再描述。但是ES的官方文档,特别是关于jav...
  • xvshu
  • xvshu
  • 2015年10月05日 19:30
  • 23396

[ElasticSearch] 空间搜索 (一)

根据索引文档的地理坐标来进行搜索,Elasticsearch 也能够处理这样的搜索。——空间搜索 一、为空间搜索准备映射 PUT my_space_test { "mappings": { ...
  • Shiyaru1314
  • Shiyaru1314
  • 2015年08月12日 17:17
  • 4760

实时搜索引擎Elasticsearch(5)——Java API的使用

前一篇有关ES的文章介绍了使用Rest方式调用ES的聚合API。本文介绍ES的Java API调用。...
  • xialei199023
  • xialei199023
  • 2015年11月28日 23:47
  • 25838

[搜索]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
  • 64757

Elasticsearch Java-API CRUD Java操作Elasticsearch

参考资料: 请使用google浏览器安装Sense,或在liunx下使用curl。 Es restful api 是基础,要先学一下才能使用java-pai,不然相当模糊。Es入门很容易,但是主要难...
  • u013271674
  • u013271674
  • 2016年04月20日 15:22
  • 2323

ElasticSearch java API - 聚合查询

Elastic Search Java API 各种聚合(Aggregation)查询的实现
  • carlislelee
  • carlislelee
  • 2016年09月20日 17:20
  • 9175

Elasticsearch Java API深入详解

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

ElasticSearch的Java API

1.与ES服务集群交互方式 可以通过两种方式来连接到elasticsearch(简称es)集群,第一种是通过在你的程序中创建一个嵌入es节点(Node),使之成为es集群的一部分,然后通过这个节点来与...
  • ljc2008110
  • ljc2008110
  • 2015年09月22日 13:19
  • 11409
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ElasticSearch Java API的使用
举报原因:
原因补充:

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