elasticsearch的集中常见操作
1.引入dependency
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-elasticsearch</artifactId>
<version>1.4.0.M1</version>
</dependency>
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
}
}

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;
}
}
准备工作做完了,下面开始测试
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");//索引的id
String delete = elasticsearchTemplate.delete(Yanan.class, "10");//索引的id
System.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>() {
@Override
public 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");// 索引的id
Yanan 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协议即9303
transportClient = new TransportClient(setting);
TransportAddress transportAddress = new InetSocketTransportAddress(ip, port);
transportClient.addTransportAddresses(transportAddress);
elasticsearchTemplate = new ElasticsearchTemplate(transportClient);
return elasticsearchTemplate;
}
}
elasticsearch的集中常见操作的更多相关文章
- 动态单链表的传统存储方式和10种常见操作-C语言实现
顺序线性表的优点:方便存取(随机的),特点是物理位置和逻辑为主都是连续的(相邻).但是也有不足,比如:前面的插入和删除算法,需要移动大量元素,浪费时间,那么链式线性表 (简称链表) 就能解决这个问题. ...
- 使用Hive或Impala执行SQL语句,对存储在Elasticsearch中的数据操作(二)
CSSDesk body { background-color: #2574b0; } /*! zybuluo */ article,aside,details,figcaption,figure,f ...
- 使用Hive或Impala执行SQL语句,对存储在Elasticsearch中的数据操作
http://www.cnblogs.com/wgp13x/p/4934521.html 内容一样,样式好的版本. 使用Hive或Impala执行SQL语句,对存储在Elasticsearch中的数据 ...
- C#路径/文件/目录/I/O常见操作汇总
文件操作是程序中非常基础和重要的内容,而路径.文件.目录以及I/O都是在进行文件操作时的常见主题,这里想把这些常见的问题作个总结,对于每个问题,尽量提供一些解决方案,即使没有你想要的答案,也希望能提供 ...
- X-Cart 学习笔记(四)常见操作
目录 X-Cart 学习笔记(一)了解和安装X-Cart X-Cart 学习笔记(二)X-Cart框架1 X-Cart 学习笔记(三)X-Cart框架2 X-Cart 学习笔记(四)常见操作 五.常见 ...
- 转:jQuery 常见操作实现方式
http://www.cnblogs.com/guomingfeng/articles/2038707.html 一个优秀的 JavaScript 框架,一篇 jQuery 常用方法及函数的文章留存备 ...
- jQuery 常见操作实现方式
一个优秀的 JavaScript 框架,一篇 jQuery 常用方法及函数的文章留存备忘. jQuery 常见操作实现方式 $("标签名") //取html元素 document. ...
- C#路径/文件/目录/I/O常见操作汇总<转载>
文件操作是程序中非常基础和重要的内容,而路径.文件.目录以及I/O都是在进行文件操作时的常见主题,这里想把这些常见的问题作个总结,对于每个问题,尽量提供一些解决方案,即使没有你想要的答案,也希望能提供 ...
- [java学习笔记]java语言基础概述之数组的定义&常见操作(遍历、排序、查找)&二维数组
1.数组基础 1.什么是数组: 同一类型数据的集合,就是一个容器. 2.数组的好处: 可以自动为数组中的元素从零开始编号,方便操作这些数据. 3.格式: (一 ...
随机推荐
- 初识Hibernate的主配置和映射配置
Hibernate.cfg.xml 主配置 Hibernate.cfg.xml 主配置文件夹中主要配置:数据库链接配置,其他参数配置,映射信息等. 常用配置查看源码: hibernate-distri ...
- 【Tarjan缩点】PO3352 Road Construction
Road Construction Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 12532 Accepted: 630 ...
- 【状压DP】poj3254 Corn Fields
题意: 一块n*m的田,1表示这个地方可以种植,0代表这个地方不能种植.植物种植还必须满足两株植物不能相邻(横竖都不行).问共有几种种植方法,而且当什么都不种时认为是一种方法. 解题思路: 种植用1表 ...
- JavaScript对于switch语句中的case后键入值的带不带引号
一.用switch选择星期几 这时case为 例:case="星期一" 二.用switch选择单纯的数字 这时case为 例:case='1' 三.用switch选择一个应用了 ...
- ps 替换背景以及调整尺寸
领导吩咐我修改她的图片背景,尺寸, 屁颠屁颠去弄,半小时后发现大学里学的 ps 忘差不多了,这里总结一下修改图片背景以及尺寸的基本操作. 1. 去除原背景 方法一: 选中魔术橡皮擦, 点击原图中背景, ...
- 手淘的flexible.js解决手机适配问题
如何使用flexible.js做手机适配 做移动端网页肯定需要做适配,以前都用的fixscreen.js,对比一下,觉得flexible.js更好吧,毕竟是大厂出的东西. 第一步要给页面加在viewp ...
- 使用python写天气预告
先去YY天气注册一个账号,然后就能用API了 http://www.yytianqi.com/ # encoding=utf-8import urllib.requestimport jsonimpo ...
- deeplearning.ai 构建机器学习项目 Week 2 机器学习策略 II 听课笔记
1. 误差分析(Error analysis) 误差分析的目的是找到不同误差源的比重,从而指引我们接下来往哪个方向努力改进.NG建议手工统计随机100个错误的误差源,比如对于猫分类器,错误的照片可能是 ...
- UVA 572 dfs求连通块
The GeoSurvComp geologic survey company is responsible for detecting underground oil deposits. GeoSu ...
- hdu_1286找新朋友(欧拉定理)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1286 找新朋友 Time Limit: 2000/1000 MS (Java/Others) M ...