elasticsearch的集中常见操作
1.引入dependency
<dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-elasticsearch</artifactId><version>1.4.0.M1</version> </dependency>
View Code
2:创建\添加索引
{"_index": "yananindex","_type": "yanantype","_id": "4","_score": 1,"_source": {"name": "zhangyanan4","gender": "male","id": 4}},{"_index": "yananindex","_type": "yanantype","_id": "5","_score": 1,"_source": {"name": "zhangyanan5","gender": "male","id": 5}},{"_index": "yananindex","_type": "yanantype","_id": "6","_score": 1,"_source": {"name": "zhangyanan6","gender": "male","id": 6}},{"_index": "yananindex","_type": "yanantype","_id": "1","_score": 1,"_source": {"name": "zhangyanan1","gender": "female","id": 1}},{"_index": "yananindex","_type": "yanantype","_id": "2","_score": 1,"_source": {"name": "zhangyanan2","gender": "female","id": 2}},{"_index": "yananindex","_type": "yanantype","_id": "7","_score": 1,"_source": {"name": "zhangyanan7","gender": "male","id": 7}},{"_index": "yananindex","_type": "yanantype","_id": "3","_score": 1,"_source": {"name": "zhangyanan3","gender": "female","id": 3}}
View Code
3.创建实体类
package testweb;import org.springframework.data.elasticsearch.annotations.Document;@Document(indexName="yananindex",type="yanantype") public class Yanan {private int id;private String name;private String gender;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;} }
View Code
准备工作做完了,下面开始测试
4.queryForObject\queryForList\聚合查询\统计数量\判断索引是否存在\删除指定id的索引
package testweb;import java.util.List; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.client.transport.TransportClient; import org.elasticsearch.common.settings.ImmutableSettings; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.transport.InetSocketTransportAddress; import org.elasticsearch.common.transport.TransportAddress; import org.elasticsearch.index.query.BoolQueryBuilder; import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.search.aggregations.AggregationBuilders; import org.elasticsearch.search.aggregations.Aggregations; import org.elasticsearch.search.aggregations.bucket.terms.StringTerms; import org.elasticsearch.search.aggregations.bucket.terms.TermsBuilder; import org.elasticsearch.search.aggregations.bucket.terms.Terms.Bucket; import org.springframework.data.elasticsearch.core.ElasticsearchTemplate; import org.springframework.data.elasticsearch.core.ResultsExtractor; import org.springframework.data.elasticsearch.core.query.GetQuery; import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;public class TestES {static TransportClient transportClient;static ElasticsearchTemplate elasticsearchTemplate;public static void main(String[] args) {elasticsearchTemplate=getElasticsearchTemplate("localhost","elasticsearch_bak",9303);//queryForObject();//根据索引id查询文档//queryForList();//aggregationQuery();//聚合查询//count();//indexExists(Yanan.class); deleteById();}private static void deleteById() {// IndexQueryBuilder indexquery=new IndexQueryBuilder().withId("1").withObject(Yanan.class);//String delete = elasticsearchTemplate.delete("yananindex", "yanantype", "10");//索引的idString delete = elasticsearchTemplate.delete(Yanan.class, "10");//索引的idSystem.out.println(delete);//删除的索引的id }private static void indexExists(Class<Yanan> clazz) {if(elasticsearchTemplate.indexExists(clazz)){System.out.println("true");}else{System.out.println(false);}}private static void count() {NativeSearchQueryBuilder searchQuery=new NativeSearchQueryBuilder();BoolQueryBuilder bqb = QueryBuilders.boolQuery();bqb.must(QueryBuilders.termQuery("gender","female"));searchQuery.withIndices("yananindex").withQuery(bqb);long count = elasticsearchTemplate.count(searchQuery.build());System.out.println(count);}private static void aggregationQuery() {TermsBuilder termsBuilder = AggregationBuilders.terms("maleCount").field("name").size(10);NativeSearchQueryBuilder searchQuery=new NativeSearchQueryBuilder();BoolQueryBuilder bqb = QueryBuilders.boolQuery();bqb.must(QueryBuilders.termQuery("gender","male"));searchQuery.withIndices("yananindex").withQuery(bqb).addAggregation(termsBuilder);Aggregations aggregations = elasticsearchTemplate.query(searchQuery.build(), new ResultsExtractor<Aggregations>() {@Overridepublic Aggregations extract(SearchResponse response) {return response.getAggregations();}});StringTerms modelTerms = (StringTerms)aggregations.asMap().get("maleCount");List<Bucket> buckets = modelTerms.getBuckets();for(int i=0;i<buckets.size();i++){System.out.println(buckets.get(i).getKey()+"\t"+buckets.get(i).getDocCount());}}private static void queryForList() {NativeSearchQueryBuilder searchQuery = new NativeSearchQueryBuilder();BoolQueryBuilder bqb = QueryBuilders.boolQuery();bqb.must(QueryBuilders.termQuery("gender","male"));searchQuery.withIndices("yananindex").withQuery(bqb);List<Yanan> list = elasticsearchTemplate.queryForList(searchQuery.build(), Yanan.class);for(int i=0;i<list.size();i++){Yanan yanan = list.get(i);System.out.println(yanan.getName()+"\t"+yanan.getGender()+"\t"+yanan.getId());}}private static void queryForObject() {GetQuery query = new GetQuery();query.setId("1");// 索引的idYanan yanan = elasticsearchTemplate.queryForObject(query, Yanan.class);System.out.println(yanan.getGender());System.out.println(yanan.getName());System.out.println(yanan.getId());// 实体的id }static ElasticsearchTemplate getElasticsearchTemplate(String ip,String clusterName,int port){//<a href="http://blog.csdn.net/ty4315/article/details/52434296" target="_blank">@参考文章1</a>,<a href="http://blog.csdn.net/ljc2008110/article/details/48630609" target="_blank">@参考文章2</a>Settings setting = ImmutableSettings.settingsBuilder().put("cluster.name", clusterName)// 指定集群名称.put("client.transport.sniff", true)// 启动嗅探功能,客户端去嗅探整个集群的状态,把集群中其它机器的ip地址加到客户端中,这样做的好处是一般你不用手动设置集群里所有集群的ip到连接客户端,它会自动帮你添加,并且自动发现新加入集群的机器。 .build();// 创建客户端 通过setting来创建,若不指定则默认链接的集群名为elasticsearch 链接使用tcp协议即9303transportClient = new TransportClient(setting);TransportAddress transportAddress = new InetSocketTransportAddress(ip, port);transportClient.addTransportAddresses(transportAddress);elasticsearchTemplate = new ElasticsearchTemplate(transportClient);return elasticsearchTemplate;} }
View Code
转载于:https://www.cnblogs.com/yanan7890/p/6652200.html
elasticsearch的集中常见操作相关推荐
- 【ES笔记02】ElasticSearch数据库之查询操作(match、must、must_not、should、_source、filter、range、exists、ids、term、terms)
这篇文章,主要介绍ElasticSearch数据库之查询操作(match.must.must_not.should._source.filter.range.exists.ids.term.terms ...
- 路径,文件,目录,I/O常见操作汇总
摘要: 文件操作是程序中非常基础和重要的内容,而路径.文件.目录以及I/O都是在进行文件操作时的常见主题,这里想把这些常见的问题作个总结,对于每个问题,尽量提供一些解决方案,即使没有你想要的答案 ...
- python字典操作添加_Python字典常见操作实例小结【定义、添加、删除、遍历】
本文实例总结了python字典常见操作.分享给大家供大家参考,具体如下: 简单的字典: 字典就是键值对key-value组合. #字典 键值对组合 alien_0 ={'color':'green', ...
- BOM,DOM常见操作和DHML
BOM (Browser Object Model)浏览器对象模型,控制浏览器的一些行为 window对象 代表一个HTML文档 属性 页面导航的5个属性 self, parent, top, ope ...
- go语言笔记——切片函数常见操作,增删改查和搜索、排序
7.6.6 搜索及排序切片和数组 标准库提供了 sort 包来实现常见的搜索和排序操作.您可以使用 sort 包中的函数 func Ints(a []int) 来实现对 int 类型的切片排序.例如 ...
- 在单链表写入一组数据代码_链表常见操作和15道常见面试题
什么是单链表 链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer),简单来说链表并不像数组那样 ...
- python基础实例-Python基础之字符串常见操作经典实例详解
本文实例讲述了Python基础之字符串常见操作.分享给大家供大家参考,具体如下: 字符串基本操作 切片 # str[beg:end] # (下标从 0 开始)从下标为beg开始算起,切取到下标为 en ...
- C#路径/文件/目录/I/O常见操作汇总(一)
文件操作是程序中非常基础和重要的内容,而路径.文件.目录以及I/O都是在进行文件操作时的常见主题,这里想把这些常见的问题作个总结,对于每个问题, 尽量提供一些解决方案,即使没有你想要的答案,也希望能提 ...
- python下selenium模拟浏览器常见操作
本文主要记录下selenium的常见操作,如定位具体元素的不同方法.在具体元素内循环.提取文本等.具体代码如下: # -*- coding: utf-8 -*- ''' Created on 2019 ...
最新文章
- APUE(第八章)进程控制
- 基于SAAS的IT运维管理方案
- js const 和 var 的区别
- boot返回码规范 spring_SpringBoot 系列 web 篇之自定义返回 Http Code 的 n 种姿势
- TCP/IP学习笔记(九)TCP报文段首部格式
- android webview 数字键盘,android – 在WebView中显示数字键盘
- 某游戏在华为鸿蒙,华为鸿蒙系统运行安卓游戏出现新状况!安卓换皮论被彻底打脸?...
- python gui开发_python 开发GUI应用之Dabo
- Pytorch开发环境安装(Windows版本)
- 解决hibernate双向关系造成的一方重复执行SQl,或者死循环的问题
- java集合类的框架图_Java集合框架01-框架总览
- 前端大神:如何看待 React Server Components?
- 第2章 开始学习C++
- 微光app电脑版_有哪些适合学生使用的 App?②
- 生信技能树课程记录笔记(六)20220530
- 怎样的男女才是最合适的
- MATLAB中求矩阵的特征值和特征向量
- 积分商城系统业务逻辑思维导图_怎么开发积分商城系统_OctShop
- solidworks2014可否保存成以前版本?--问题解决
- 2020最实用115个Java面试题及面向对象的能力汇总合集