服务器端和客户端的elasticsearch版本号须一致
setExplain(true)设置是否按查询匹配度排序
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.search.SearchType;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.common.unit.TimeValue;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
public class Searcher {
private TransportClient client;
public void init(){
client = new TransportClient().addTransportAddress(
new InetSocketTransportAddress("10.18.6.90", 9300));// localhost9300
}
//生成索引
public void generateIndex() {
Map<String, Object> json = new HashMap<String, Object>();
json.put("user", "hdidkv");
json.put("postDate", new Date());
json.put("message", "哥大富大贵");
IndexResponse response = this.client
.prepareIndex("twitter", "tweet", "1")
.setSource(json)
.execute()
.actionGet();
}
//查看索引
public void getIndex() {
GetResponse response = client.prepareGet("twitter", "test", "1")
.execute().actionGet();
Map<String, Object> rpMap = response.getSource();
if (rpMap == null) {
System.out.println("empty");
return;
}
Iterator<Entry<String, Object>> rpItor = rpMap.entrySet().iterator();
while (rpItor.hasNext()) {
Entry<String, Object> rpEnt = rpItor.next();
System.out.println(rpEnt.getKey() + " : " + rpEnt.getValue());
}
}
//创建一个termQuery查询
public void searchIndex() {
QueryBuilder qb = QueryBuilders.termQuery("user", "hdidkv");
SearchResponse scrollResp = client.prepareSearch("twitter")
//.setSearchType(SearchType.SCAN)
.setTypes("tweet")
.setScroll(new TimeValue(60000))
.setQuery(qb)
.setSize(100).execute().actionGet(); //100 hits per shard will be returned for each scroll
//Scroll until no hits are returned
while (true) {
scrollResp = client.prepareSearchScroll(scrollResp.getScrollId()).
setScroll(new TimeValue(600000)).execute().actionGet();
System.out.println(scrollResp.getHits().getTotalHits());
for (SearchHit hit : scrollResp.getHits()) {
Iterator<Entry<String, Object>> rpItor = hit.getSource().entrySet().iterator();
while (rpItor.hasNext()) {
Entry<String, Object> rpEnt = rpItor.next();
System.out.println(rpEnt.getKey() + " 1:1 " + rpEnt.getValue());
}
}
if (scrollResp.getHits().hits().length == 0) {
break;
}
}
}
//删除索引
public void deleteIndex() {
DeleteResponse response = client.prepareDelete("twitter", "tweet", "1")
.execute().actionGet();
}
//关闭连接
public void closeClient() {
this.client.close();
}
//练习使用elasticsearch的Java接口
public static void main(String[] args) {
//TransportClient client = new TransportClient().addTransportAddress(new InetSocketTransportAddress("10.18.6.90", 9200));
Searcher searcher = new Searcher();
searcher.init();
searcher.generateIndex();
//searcher.getIndex();
searcher.searchIndex();
searcher.closeClient();
}
}
相关推荐
ElasticSearch Java API 中文文档 ElasticSearch Java API 中文文档
ElasticSearch 官方 java API
基于Elasticsearch Java API的参考手册
本手册不仅详细描述了如何使用Java作为客户端访问ElasticSearch的代码和方法,同时也描述了在使用ElasticSearch遇到的坑和解决方案,是新手入门不可多得的教材,也是老手借鉴提高的材料。
elasticsearch java工具包 提供各种elasticsearch 操作,可直接应用于项目
使用springboot集成了elasticsearch,封装了常用api,并使用自定义注解创建mapping,简化开发,开箱即用。注:使用的是elasticsearch 5.x版本
在eclipse上,操作elasticsearch的简单程序
java连接elasticsearch实现全文检索,并且高亮显示结果,实现分页。项目基于elasticsearch5.6.1可根据自己实际情况调整版本。最近项目需要所以学习了一下,项目很简单可以根据你的实际情况更改接口。我本地的搜索是...
elasticsearch java使用手册包含最基本的es使用方法。
Elasticsearch的JAVA操作工具类,包括增删改查的封装,Elasticsearch的JAVA操作工具类,包括增删改查的封装
分布式搜索elasticsearch java API 之(一)--- 与集群交互 2 分布式搜索elasticsearch java API 之(二)--- put Mapping定义索引字段属性 3 分布式搜索elasticsearch java API 之(三)--- 索引数据 6 分布式搜索...
Elasticsearch Java api 工具类,包括增删改查索引,增删改查数据等代码,欢迎下载
消费kafka数据,然后批量导入到Elasticsearch,本例子使用的kafka版本0.10,es版本是6.4,使用bulk方式批量导入到es中,也可以一条一条的导入,不过比较慢。 <groupId>org.elasticsearch <artifactId>elastic...
ES(elasticSearch6.4.0)之java API源码demo-完整注释版,本版本为上一demo版本升级版,封装了ES的javaAPI,支持了模糊查询,排序查询,解析,分页查询等功能,如果有问题请留言。我会及时回复。
elasticsearch JAVA使用手册
基于Elasticsearch2.1.1的JavaAPI基本操作代码示例
第一步:启动一个elasticsearch服务,bin目录下的elasticsearch.bat 第二步:建索引,执行MusicReviewIndex中的单元测试方法index() 第三步:检索测试,执行MusicReviewSearch中的单元测试方法search() 本实例基于: ...
创建索引,删除索引,更新索引,模糊搜索,模糊全文搜索,精确查找
(狂神)ElasticSearch快速入门笔记,ElasticSearch基本操作以及爬虫(Java-ES仿京东实战),包含了小狂神讲的东西,特别适合新手学习,笔记保存下来可以多看看。好记性不如烂笔头哦~,ElasticSearch,简称es,es是一个...
elasticsearch java 使用的demo例子,很好的