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的集中常见操作相关推荐

  1. 【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 ...

  2. 路径,文件,目录,I/O常见操作汇总

    摘要:    文件操作是程序中非常基础和重要的内容,而路径.文件.目录以及I/O都是在进行文件操作时的常见主题,这里想把这些常见的问题作个总结,对于每个问题,尽量提供一些解决方案,即使没有你想要的答案 ...

  3. python字典操作添加_Python字典常见操作实例小结【定义、添加、删除、遍历】

    本文实例总结了python字典常见操作.分享给大家供大家参考,具体如下: 简单的字典: 字典就是键值对key-value组合. #字典 键值对组合 alien_0 ={'color':'green', ...

  4. BOM,DOM常见操作和DHML

    BOM (Browser Object Model)浏览器对象模型,控制浏览器的一些行为 window对象 代表一个HTML文档 属性 页面导航的5个属性 self, parent, top, ope ...

  5. go语言笔记——切片函数常见操作,增删改查和搜索、排序

    7.6.6 搜索及排序切片和数组 标准库提供了 sort 包来实现常见的搜索和排序操作.您可以使用 sort 包中的函数 func Ints(a []int) 来实现对 int 类型的切片排序.例如  ...

  6. 在单链表写入一组数据代码_链表常见操作和15道常见面试题

    什么是单链表 链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer),简单来说链表并不像数组那样 ...

  7. python基础实例-Python基础之字符串常见操作经典实例详解

    本文实例讲述了Python基础之字符串常见操作.分享给大家供大家参考,具体如下: 字符串基本操作 切片 # str[beg:end] # (下标从 0 开始)从下标为beg开始算起,切取到下标为 en ...

  8. C#路径/文件/目录/I/O常见操作汇总(一)

    文件操作是程序中非常基础和重要的内容,而路径.文件.目录以及I/O都是在进行文件操作时的常见主题,这里想把这些常见的问题作个总结,对于每个问题, 尽量提供一些解决方案,即使没有你想要的答案,也希望能提 ...

  9. python下selenium模拟浏览器常见操作

    本文主要记录下selenium的常见操作,如定位具体元素的不同方法.在具体元素内循环.提取文本等.具体代码如下: # -*- coding: utf-8 -*- ''' Created on 2019 ...

最新文章

  1. APUE(第八章)进程控制
  2. 基于SAAS的IT运维管理方案
  3. js const 和 var 的区别
  4. boot返回码规范 spring_SpringBoot 系列 web 篇之自定义返回 Http Code 的 n 种姿势
  5. TCP/IP学习笔记(九)TCP报文段首部格式
  6. android webview 数字键盘,android – 在WebView中显示数字键盘
  7. 某游戏在华为鸿蒙,华为鸿蒙系统运行安卓游戏出现新状况!安卓换皮论被彻底打脸?...
  8. python gui开发_python 开发GUI应用之Dabo
  9. Pytorch开发环境安装(Windows版本)
  10. 解决hibernate双向关系造成的一方重复执行SQl,或者死循环的问题
  11. java集合类的框架图_Java集合框架01-框架总览
  12. 前端大神:如何看待 React Server Components?
  13. 第2章 开始学习C++
  14. 微光app电脑版_有哪些适合学生使用的 App?②
  15. 生信技能树课程记录笔记(六)20220530
  16. 怎样的男女才是最合适的
  17. MATLAB中求矩阵的特征值和特征向量
  18. 积分商城系统业务逻辑思维导图_怎么开发积分商城系统_OctShop
  19. solidworks2014可否保存成以前版本?--问题解决
  20. 2020最实用115个Java面试题及面向对象的能力汇总合集

热门文章

  1. 【并行编程】系统体系结构和组件具体说明
  2. 极客Web前端开发资源大荟萃#007
  3. redhat5.5安装oracle10g出现问题
  4. 虚拟化正是云计算所依托的基石
  5. [zt]如何用Javascript获得TextArea中的光标位置
  6. Support:Tenjeafan@163.com
  7. Markdown基本语法使用
  8. withRouter组件
  9. php函数,static,globalkeyword及三种变量作用域
  10. 分析RAC下一个SPFILE整合的三篇文章的文件更改