`

elasticsearch 学习笔记(2)-客户端编程【原创】

阅读更多
客户端编程可以自己封装json http请求,也可以采用es客户端API。这里介绍API方式。
1. 初始化Client
public void init() {
		String clusterName="elasticsearch";
		String ip= "192.168.180.15";
		Settings settings = Settings.settingsBuilder()
		        .put("cluster.name", clusterName)
		        .build();
		try {
		    client = TransportClient.builder()
		            .settings(settings).build()
		            .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(ip),9300));
		    createMapping("index", "type");		} catch (Exception e) {
		   	e.printStackTrace();
		}
	}

分词映射:
private void createMapping(String indices,String mappingType)throws Exception{
	new XContentFactory();
		XContentBuilder builder=XContentFactory.jsonBuilder()
		.startObject()
			.startObject(mappingType)
				.startObject("properties")
					.startObject("XXX").field("type", "string").field("store", "yes").field("index","not_analyzed").endObject()
					.startObject("YYY").field("type", "string").field("store", "yes").field("analyzer", "ik").endObject()
					.startObject("ZZZ").field("type", "double").field("store", "yes").field("index","not_analyzed").endObject()				.endObject()
			.endObject()
		.endObject();
		PutMappingRequest mapping = Requests.putMappingRequest(indices).type(mappingType).source(builder);
		client.admin().indices().putMapping(mapping).actionGet();
	}

XXX,YYY,ZZZ代表业务字段,因为只演示技术,所以以虚拟字段代替。

2. 创建索引
//其中的map为业务数据,key=XXX/YYY/ZZZ
private void createChineseIndex(String id, Map<String, Object> map) throws Exception{
		client.prepareIndex("index", "type", id).setSource(generateJson(map))
		.execute().actionGet();
	}
//生成json请求数据
private String generateJson(Map<String, Object> map) {
		String json = "";
		try {
			XContentBuilder contentBuilder = XContentFactory.jsonBuilder()
					.startObject();
			for(String key:map.keySet()){
				contentBuilder.field(key, map.get(key));
			}
			json = contentBuilder.endObject().string();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return json;
	}


3. 分组统计
private String searchGoodsName(String goodsName) {
		String fullGoodsName=null;
		SearchResponse response = client.prepareSearch("index")
				.setTypes("type")
				.setSearchType(SearchType.COUNT)
				.setQuery(QueryBuilders.termQuery("XXX", goodsName))
				.addAggregation(AggregationBuilders.terms("gCount").field("YYY"))
				.execute().actionGet();
		StringTerms gNameTerms = (StringTerms) response.getAggregations().get("gCount");
		
		Iterator<Bucket> gradeBucketIt = gNameTerms.getBuckets().iterator();
		
		while(gradeBucketIt.hasNext())
		{
			Bucket gradeBucket = gradeBucketIt.next();
			System.out.println("名称:"+gradeBucket.getKey() + ",数量" + gradeBucket.getDocCount());
			if(fullGoodsName==null){
				fullGoodsName=gradeBucket.getKey().toString();
			}
		}
		
		return fullGoodsName;
	}

4.排序
SearchResponse response = client.prepareSearch("index")
				.setTypes("type")
				.setSearchType(SearchType.DFS_QUERY_AND_FETCH)
				.setQuery(QueryBuilders.termQuery("XXX", name)) // Query
				.setPostFilter(QueryBuilders.termQuery("YYY", value))
				.addSort("ZZZ", SortOrder.ASC)                       // Filter
				.setFrom(0).setSize(60).execute().actionGet();

5.简单查询
SearchResponse response = client.prepareSearch("index")
				.setTypes("type")
				.setSearchType(SearchType.DFS_QUERY_AND_FETCH)
				.setQuery(QueryBuilders.termQuery("XXX", name)) // Query
				.setPostFilter(QueryBuilders.termQuery("YYY", value))
				.setFrom(0).setSize(60).setExplain(false).execute().actionGet();

6.关闭客户端
public void close() {
		client.close();
	}
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    ElasticSearch学习笔记1

    ElasticSearch学习笔记1 ElasticSearch是基于Lucene的搜索服务器,它提供了高性能的全文搜索功能,支持开箱即用的集群化扩展。ElasticSearch可以通过标准的REST API或特定于编程语言的客户端库与之交互。 一、什么...

    编程不良人的SpringCloud笔记和资料,全套

    Sleuth是一个分布式追踪解决方案,它为服务之间的调用提供日志跟踪,可与Zipkin或ELK(Elasticsearch、Logstash、Kibana)等工具配合,帮助分析请求在系统中的流转过程。 11. **Spring Cloud Stream消息驱动** ...

    Elasticsearch API

    关于Elasticsearch的学习资料,官方提供了两个英文版文档,Elasticsearch Reference和Elasticsearch: the Definitive Guide。这两个文档虽然较为全面,但是阅读上可能有难度,尤其是在英语阅读能力有限的情况下。...

    javascript学习笔记.docx

    这篇学习笔记主要涵盖了JavaScript的基础语法和客户端JavaScript的相关知识。 1. **JavaScript基本语法**: - **变量声明**:未声明的变量尝试读取时会产生错误,而写入未声明的变量会创建一个全局变量。 - **...

    大佬的前端学习笔记

    学习笔记会涵盖JavaScript的基础语法、变量、数据类型、控制结构、函数、对象、数组、作用域、闭包、异步编程(Promise和async/await)等内容。同时,也会介绍ES6及以后版本的新特性,如箭头函数、模板字符串、解构...

    node.js学习笔记,包含ES模块化、express基础、jsonp模块、koa2、Mocha、MySQL操作、路.zip

    这份学习笔记涵盖了Node.js的多个重要知识点,包括ES模块化、Express框架的基础、JSONP处理、Koa2框架、Mocha测试工具以及MySQL数据库的操作。让我们逐一深入探讨这些主题。 1. **ES模块化**:在Node.js中,ES模块...

    javascript学习笔记整理知识点整理

    这份“javascript学习笔记整理知识点整理”是针对初学者的一份宝贵资料,涵盖了JavaScript的基础知识,旨在帮助新手快速入门并掌握这门语言的核心概念。 一、变量与数据类型 在JavaScript中,变量用于存储数据。...

    OpenGL 学习笔记整理

    它在OpenGLES的基础上运行,后者是OpenGL的嵌入式版本,适用于移动设备和嵌入式系统。OpenGL的核心概念是它采用客户端-服务端模式,其中客户端是程序员编写的程序,而服务端是图形硬件,如GPU,负责处理复杂的图形...

    javascript学习笔记

    在本"JavaScript学习笔记"中,我们将探讨JavaScript的核心概念、语法特性、DOM操作以及常见应用。 1. **基础语法** - 变量声明:JavaScript使用`var`、`let`和`const`进行变量声明,其中`let`和`const`是ES6新增的...

    JavaScript从入门到精通学习笔记

    ### JavaScript从入门到精通学习笔记 #### 一、JavaScript简介 **1.1 JavaScript是什么** JavaScript 是一种轻量级的编程语言,主要被用于客户端(浏览器端)的脚本语言,能够实现动态网页效果,增强用户体验。...

    JavaScript入门学习笔记.pdf

    JavaScript与Java虽然名字相似,但两者是完全不同的语言,JavaScript主要是在客户端的浏览器上运行,而Java则是一种更通用的面向对象的编程语言。 JavaScript的核心特性包括: 1. **事件驱动**:JavaScript可以对...

    Jave云笔记开发

    14. **监控与日志**:利用ELK(Elasticsearch、Logstash、Kibana)堆栈或Prometheus+Grafana组合对应用性能进行监控和日志分析。 以上就是“Jave云笔记开发”项目可能涉及的主要知识点,每一个方面都需要开发者具备...

    FE-blog-repository:我的前端学习笔记仓库

    2. **JavaScript**:一种广泛应用于网页和网络应用的编程语言,用于实现客户端的动态效果和交互。JavaScript是前端开发的基础,用于处理DOM操作、数据交互、动画等。 3. **CSS**:层叠样式表,用于描述HTML或XML...

    第二阶段笔记笔记笔记笔记.zip

    在本压缩包“第二阶段笔记笔记笔记笔记.zip”中,主要涵盖了JavaScript和Node.js的相关学习内容,结合了个人的理解和实践经验。以下是对这两个重要技术领域的详细解析。 **JavaScript:** JavaScript,简称JS,是...

    韩顺平AJAX和jquery笔记整理

    ### 韩顺平AJAX和jQuery笔记整理 #### AJAX概览 - **定义**:Asynchronous JavaScript and XML(异步JavaScript与XML),是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。 - **运行原理**: - ...

    狂神说全部笔记内容.zip

    我们可以了解到这些笔记详细讲解了多个关键知识点,包括JVM(Java虚拟机)、Java并发编程(JUC)、消息中间件ActiveMQ、数据库缓存系统Redis、微服务框架Spring Cloud、全文搜索引擎Elasticsearch、前端CSS3、Java...

Global site tag (gtag.js) - Google Analytics