1.引入dependency

<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-elasticsearch</artifactId>
<version>1.4.0.M1</version>
</dependency>

2:创建\添加索引

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常用JAVA API 实例的更多相关文章

  1. Elasticsearch中JAVA API的使用

    1.Elasticsearch中Java API的简介 Elasticsearch 的Java API 提供了非常便捷的方法来索引和查询数据等. 通过添加jar包,不需要编写HTTP层的代码就可以开始 ...

  2. 算法竞赛中的常用JAVA API:PriorityQueue(优先队列)(转载)

    算法竞赛中的常用JAVA API:PriorityQueue(优先队列) PriorityQueue 翻译过来就是优先队列,本质是一个堆, 默认情况下堆顶每次都保留最小值,每插入一个元素,仍动态维护堆 ...

  3. 算法竞赛中的常用JAVA API :HashSet 和 TreeSet(转载)

    算法竞赛中的常用JAVA API :HashSet 和 TreeSet set set容器的特点是不包含重复元素,也就是说自动去重. HashSet HashSet基于哈希表实现,无序. add(E ...

  4. 算法竞赛中的常用JAVA API :HashMap 和 TreeMap(转载)

    算法竞赛中的常用JAVA API :HashMap 和 TreeMap 摘要 本文主要介绍Map接口下的HashMap和TreeMap. HashMap HashMap是基于哈希表的 Map 接口的实 ...

  5. 8.算法竞赛中的常用JAVA API :Calendar日期类

    8.算法竞赛中的常用JAVA API :Calendar日期类 摘要 在蓝桥杯中有关于日期计算的问题,正好java中的Date类和Calendar类提供了对日期处理的一些方法.Date类大部分方法已经 ...

  6. 6.算法竞赛中的常用JAVA API :Math类(转载)

    6.算法竞赛中的常用JAVA API :Math类 求最值 最小值 Math.min(int a, int b) Math.min(float a, float b) Math.min(double ...

  7. 常用Java API之Ramdom--用代码模拟猜数小游戏

    常用Java API之Ramdom Ramdom类用来生成随机数字.使用起来也是三个步骤: 1.导包 import java.util.Random; 2.创建 Random r = new Rand ...

  8. 常用Java API之Scanner:功能与使用方法

    Scanner 常用Java API之Scanner:功能与使用方法 Scanner类的功能:可以实现键盘输入数据到程序当中. 引用类型的一般使用步骤:(Scanner是引用类型的) 1.导包 imp ...

  9. 7.算法竞赛中的常用JAVA API :String 、StringBuilder、StringBuffer常用方法和区别(转载)

    7.算法竞赛中的常用JAVA API :String .StringBuilder.StringBuffer常用方法和区别 摘要 本文将介绍String.StringBuilder类的常用方法. 在j ...

随机推荐

  1. LinkedHashMap学习

    一.概述 LinkedHashMap继承自HashMap,是Map接口的一个具体实现,它是有序的,可以按照插入顺序先后和访问时间先后进行排序,选择哪种排序方式取决于在新建LinkedHashMap的时 ...

  2. rtmp一些状态信息详解-as连接FMS服务器报错状态汇总~~

    原地址:http://help.adobe.com/zh_CN/AIR/1.5/jslr/flash/events/NetStatusEvent.html 下表说明了 code 和 level 属性可 ...

  3. 手游为什么要热更新,C#为什么不能热更新,LUA为什么可以

    热更新是什么?简单的说就是打补丁,只补需要部分,不用重个游戏包重打上传 热更新问题的本质是代码更新而不是资源更新,为什么呢? 大型手游都是将补丁资源放在专门的WEB服务器上,游戏启动时动态下载并放入到 ...

  4. ELK-Stack 最后一次全篇文档

    简介: ELK-Stack 日志收集系统.最后一次全篇记录的笔记,之后关于 ELK 的笔记都将是片段型.针对性的.  环境介绍: ELK-Stack:192.168.1.25 ( Redis.LogS ...

  5. Keepalived 资源监控

    简介: 作为一个高可用集群软件,Keepalived 没有 Heartbeat .RHCS 等专业的高可用集群软件功能强大,它不能够实现集群资源的托管,也不能实现对集群中运行服务的监控,好在 Keep ...

  6. 最流行的JavaScript代码规范

    什么是最佳的JavaScript代码编程规范?这可能是一个众口难调的问题.那么,不妨换个问题,什么代码规范最流行? sideeffect.kr通过分析GitHub上托管的开源代码,得出了一些有趣的结果 ...

  7. maven创建webapp项目

    新建maven项目 勾选 create a simple project 点击next 填写maven项目信息,packaging 选择war,点击Finish 创建成功后,项目结构如下 选择项目右键 ...

  8. 浅谈Job&JobDetail

    JobDetai重要属性:

  9. Lenovo SplitScreen联想分屏软件只能在联想电脑运行,如何破解

    1.正常安装软件,重启电脑. 2.打开安装目录 C:\Program Files\Lenovo\Lenovo SplitScreen\SplitScreen 找到 MachineChecker.dll ...

  10. Scala操作MongoDB

    Scala操作MongoDB // Maven <dependencies> <dependency> <groupId>org.mongodb</group ...