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. 实用线性代数和凸优化 Convex Optimization
  2. 零基础学编程学java还是python-零基础学编程,Java和Python你pick谁?
  3. 【已解决】FileNotFoundError: [Errno 2] No such file or directory:_Python系列学习笔记
  4. leetcode1075. 项目员工 I(SQL)
  5. 定义mysql日志_请教:如何查看mysql数据定义操作的日志
  6. HTML DOM addEventListener()
  7. java vm art_Android虚拟机art流程:JavaVM 和 JNIEnv 的初始化 - 神农笔记
  8. 做自媒体也要注意“轻资产”
  9. AssemblyVersion,AssemblyFileVersion和AssemblyInformationalVersion之间有什么区别?
  10. Android 增量更新实例(Smart App Updates)
  11. 长连接和端连接 心跳包机制
  12. 软件工程能调剂到计算机么,愿意调剂到计算机专业或软件工程专业
  13. 如何处理计算机显卡故障,显卡出现故障怎么办
  14. 计算机网络和internet选项,小编教你电脑ie的internet选项在哪
  15. 色彩构成与搭配——人对色彩的感觉
  16. 金誉半导体:MOS管耗尽型和增强型是什么意思?
  17. Hadoop之外的3个大数据平台
  18. 用debugserver+lldb代替gdb进行iOS远程动态调试
  19. 使用METIS软件包进行图划分
  20. Bacterial seed endophyte shapes disease resistance in rice种子内生菌与水稻抗病性的关系

热门文章

  1. CodeChef--EQUAKE
  2. nyoj------203三国志
  3. ganglia metric 默认监控项翻译
  4. 趣图:好好干,今天再加个班
  5. 高德地图多边形覆盖物添加、获取、删除
  6. 《Redis官方文档》用Redis构建分布式锁(悲观锁)
  7. CoreAnimation动画
  8. 桌面倒计时2.0 涉及知识点详解及源码分享
  9. Silverlight学习笔记之使用TranslateTransform控制对象位置
  10. mybatis-generator修改源码2