Elasticsearch(Transport Client)常用操作
这里描述操作elasticsearch采用TransportClient这种方式,官方明确表示在ES 7.0版本中将弃用TransportClient客户端,且在8.0版本中完全移除它.
记录一些常用的方法:
官方文档:
TransportClient
/**
* 简单查询es 指定index type id
*/
@Test
public void search() throws UnknownHostException {
//获取client
Settings settings= Settings.builder().put("cluster.name","my-application").build();
TransportClient transportClient=new PreBuiltTransportClient(settings);
transportClient.addTransportAddress(new
TransportAddress(InetAddress.getByName("localhost"),9300));
// 发起请求得到响应
GetResponse response=transportClient.prepareGet("index3","user3","10").get();
System.out.println(response.getSource());
}
/**
* 增加文档
*/
@Test
public void insert() throws Exception{
Settings settings= Settings.builder().put("cluster.name","my-application").build();
TransportClient client=new PreBuiltTransportClient(settings);
client.addTransportAddress(new TransportAddress(InetAddress.getByName("localhost"),9300));
XContentBuilder contentBuilder= XContentFactory.jsonBuilder()
.startObject()
.field("catid","22")
.field("classify",54)
.field("author","ssve")
.field("id","1")
.field("title","菜鸟成长记")
.endObject();
IndexResponse indexResponse = client.prepareIndex("index3", "user3", "10")
.setSource(contentBuilder)
.get();
System.out.println(indexResponse.status());
}
/**
* 删除文档
*/
@Test
public void delete() throws Exception{
Settings settings=Settings.builder().put("cluster.name","my-application").build();
TransportClient client=new PreBuiltTransportClient(settings);
client.addTransportAddress(new TransportAddress(InetAddress.getByName("localhost"),9300));
DeleteResponse deleteResponse = client.prepareDelete("index3", "user3", "10").get();
System.out.println(deleteResponse.status());
}
/**
* 修改文档
*/
@Test
public void update() throws Exception{
Settings settings=Settings.builder().put("cluster.name","my-application").build();
TransportClient client=new PreBuiltTransportClient(settings);
client.addTransportAddress(new TransportAddress(InetAddress.getByName("localhost"),9300));
UpdateRequest request=new UpdateRequest();
XContentBuilder contentBuilder=XContentFactory.jsonBuilder()
.startObject()
.field("id","555")
.endObject();
request.index("index3")
.type("user3")
.id("10")
.doc(contentBuilder);
UpdateResponse updateResponse = client.update(request).get();
System.out.println(updateResponse.status());
}
/**
*upsert使用 如有存在对应文档就修改 不存在就新增 需要指定修改的文档 和新增的文档
*/
@Test
public void upsert() throws IOException, ExecutionException, InterruptedException {
Settings settings=Settings.builder().put("cluster.name","my-application").build();
TransportClient client=new PreBuiltTransportClient(settings);
client.addTransportAddress(new TransportAddress(InetAddress.getByName("localhost"),9300));
XContentBuilder builder=XContentFactory.jsonBuilder()
.startObject()
.field("catid","22")
.field("classify",54)
.field("author","zhang")
.field("id","10")
.field("title","菜鸟成长记")
.endObject();
UpdateRequest request=new UpdateRequest();
IndexRequest indexRequest=new IndexRequest();
indexRequest.index("index3")
.type("user3")
.id("11")
.source(builder);
request.index("index3")
.type("user3")
.id("11")
.doc(new XContentFactory().jsonBuilder()
.startObject()
.field("id","i love you")
.endObject()
).upsert(indexRequest);
UpdateResponse updateResponse = client.update(request).get();
System.out.println(updateResponse.status());
}
/**
*
* 批量查询 multiGet
*/
@Test
public void multiGet() throws Exception{
Settings settings=Settings.builder().put("cluster.name","my-application").build();
TransportClient client=new PreBuiltTransportClient(settings);
client.addTransportAddress(new TransportAddress(InetAddress.getByName("localhost"),9300));
MultiGetRequest request=new MultiGetRequest();
request.add("index3","user3","11");
request.add("index3","user3","10");
request.add("index3","user3","13");
request.add("index3","user3","14");
MultiGetResponse multiGetItemResponses = client.multiGet(request).get();
for (MultiGetItemResponse response:multiGetItemResponses) {
System.out.println(response.getResponse().getSourceAsString());
}
}
/**
*
* bulk实现批量增删改操作。
*/
@Test
public void bulk() throws Exception{
Settings settings=Settings.builder().put("cluster.name","my-application").build();
TransportClient client=new PreBuiltTransportClient(settings);
client.addTransportAddress(new TransportAddress(InetAddress.getByName("localhost"),9300));
BulkRequestBuilder bulkRequestBuilder = client.prepareBulk();
IndexRequest request=new IndexRequest();
request.index("index3")
.type("user3")
.id("13")
.source(XContentFactory.jsonBuilder()
.startObject()
.field("catid","85")
.field("classify","85")
.field("author","宇宙无敌")
.field("id","漫威")
.field("title","漫威")
.endObject());
IndexRequest request1=new IndexRequest();
request1.index("index3")
.type("user3")
.id("14")
.source(XContentFactory.jsonBuilder()
.startObject()
.field("catid","55")
.field("classify","85")
.field("author","宇宙无敌")
.field("id","漫威")
.field("title","漫威")
.endObject());
bulkRequestBuilder.add(request1);
bulkRequestBuilder.add(request);
BulkResponse bulkItemResponses = bulkRequestBuilder.get();
System.out.println(bulkItemResponses.status());
}
/**
*
* 使用query查询 match_all 查询所有
*/
@Test
public void query() throws Exception{
Settings settings=Settings.builder().put("cluster.name","my-application").build();
TransportClient client=new PreBuiltTransportClient(settings);
client.addTransportAddress(new TransportAddress(InetAddress.getByName("localhost"),9300));
MatchAllQueryBuilder builder= QueryBuilders.matchAllQuery();
SearchRequestBuilder index3 = client.prepareSearch("index3")
.setQuery(builder)
.setSize(5);
SearchResponse searchResponse = index3.get();
SearchHits hits = searchResponse.getHits();
for (SearchHit hit:hits) {
System.out.println(hit.getSourceAsString());
}
}
/**
*
* 使用query查询 match 查询
*/
@Test
public void matchQuery() throws Exception{
Settings settings=Settings.builder().put("cluster.name","my-application").build();
TransportClient client=new PreBuiltTransportClient(settings);
client.addTransportAddress(new TransportAddress(InetAddress.getByName("localhost"),9300));
MatchQueryBuilder matchQueryBuilder = QueryBuilders.matchQuery("title", "爱");
SearchRequestBuilder index = client.prepareSearch("index3").setQuery(matchQueryBuilder).setSize(10);
SearchHits hits = index.get().getHits();
for (SearchHit hit:hits
) {
System.out.println(hit.getSourceAsString());
}
}
/**
*
* 使用query查询 mutilMatch 查询
*/
@Test
public void mutilMatchQuery() throws Exception{
Settings settings=Settings.builder().put("cluster.name","my-application").build();
TransportClient client=new PreBuiltTransportClient(settings);
client.addTransportAddress(new TransportAddress(InetAddress.getByName("localhost"),9300));
MultiMatchQueryBuilder multiMatchQueryBuilder = QueryBuilders.multiMatchQuery("周星驰影帝", "author","title");
SearchRequestBuilder index = client.prepareSearch("index3").setQuery(multiMatchQueryBuilder).setSize(10);
SearchHits hits = index.get().getHits();
for (SearchHit hit:hits
) {
System.out.println(hit.getSourceAsString());
}
}
/**
*
* 使用query查询 termheterms查询
*/
@Test
public void termsMatchQuery() throws Exception{
Settings settings=Settings.builder().put("cluster.name","my-application").build();
TransportClient client=new PreBuiltTransportClient(settings);
client.addTransportAddress(new TransportAddress(InetAddress.getByName("localhost"),9300));
TermsQueryBuilder termsQueryBuilder = QueryBuilders.termsQuery("title", "周星驰", "影帝");
SearchRequestBuilder index = client.prepareSearch("index3").setQuery(termsQueryBuilder).setSize(10);
SearchHits hits = index.get().getHits();
for (SearchHit hit:hits
) {
System.out.println(hit.getSourceAsString());
}
}
/**
*
* 使用query查询 范围 通配符 前缀 模糊查询
*/
@Test
public void query1() throws Exception{
Settings settings=Settings.builder().put("cluster.name","my-application").build();
TransportClient client=new PreBuiltTransportClient(settings);
client.addTransportAddress(new TransportAddress(InetAddress.getByName("localhost"),9300));
//范围查询
//QueryBuilder queryBuilder = QueryBuilders.rangeQuery("classify").from("1").to("40");
//通配符查询 * 零个或多个
// QueryBuilder queryBuilder = QueryBuilders.wildcardQuery("author","周*");
//前缀查询
// QueryBuilder queryBuilder = QueryBuilders.prefixQuery("author","周");
//模糊查询 查询类型的
// QueryBuilder queryBuilder = QueryBuilders.fuzzyQuery("id","aac");
//id查询
QueryBuilder queryBuilder = QueryBuilders.idsQuery().addIds("1","2","4");
SearchRequestBuilder index = client.prepareSearch("index3").setQuery(queryBuilder).setSize(10);
SearchHits hits = index.get().getHits();
for (SearchHit hit:hits
) {
System.out.println(hit.getSourceAsString());
}
}
/**
*
* 聚合查询
*/
@Test
public void aggregation() throws Exception{
Settings settings=Settings.builder().put("cluster.name","my-application").build();
TransportClient client=new PreBuiltTransportClient(settings);
client.addTransportAddress(new TransportAddress(InetAddress.getByName("localhost"),9300));
AggregationBuilder aggregationBuilder= AggregationBuilders.max("max").field("id");
SearchResponse index3 = client.prepareSearch("index3").addAggregation(aggregationBuilder).get();
Max max = index3.getAggregations().get("max");
System.out.println(max.getValue());
}
/**
*
* queryString
*/
@Test
public void queryString() throws Exception{
Settings settings=Settings.builder().put("cluster.name","my-application").build();
TransportClient client=new PreBuiltTransportClient(settings);
client.addTransportAddress(new TransportAddress(InetAddress.getByName("localhost"),9300));
// + 代表必须有 -代表没有
QueryBuilder queryBuilder=QueryBuilders.queryStringQuery("+周星驰 -sss");
SearchRequestBuilder index3 = client.prepareSearch("index3")
.setQuery(queryBuilder)
.setSize(10);
SearchResponse searchResponse = index3.get();
for (SearchHit hit:searchResponse.getHits()) {
System.out.println(hit.getSourceAsString());
}
}
/**
*
* 组合查询
*/
@Test
public void boolQuery() throws Exception{
Settings settings=Settings.builder().put("cluster.name","my-application").build();
TransportClient client=new PreBuiltTransportClient(settings);
client.addTransportAddress(new TransportAddress(InetAddress.getByName("localhost"),9300));
QueryBuilder queryBuilder=QueryBuilders.boolQuery()
.must(QueryBuilders.matchQuery("author","周星驰"))
.mustNot(QueryBuilders.matchQuery("title","梁朝伟"))
.should(QueryBuilders.matchQuery("title","影帝"))
.filter(QueryBuilders.rangeQuery("id").gte("1"));
SearchRequestBuilder index3 = client.prepareSearch("index3")
.setQuery(queryBuilder)
.setSize(10);
SearchResponse searchResponse = index3.get();
for (SearchHit hit:searchResponse.getHits()) {
System.out.println(hit.getSourceAsString());
}
}
Elasticsearch(Transport Client)常用操作的更多相关文章
- ElasticSearch之映射常用操作
本文案例操作,建议先阅读我之前的文章<ElasticSearch之安装及基本操作API> Mapping (映射)类似关系型数据库中的表的结构定义.我们将数据以 JSON 格式存入到 El ...
- zookeeper client 常用操作
#获取权限(类似于登陆) addauth digest admin-user:admin-password #查看权限 getAcl /collections/meixin_product/state ...
- elasticsearch系列七:ES Java客户端-Elasticsearch Java client(ES Client 简介、Java REST Client、Java Client、Spring Data Elasticsearch)
一.ES Client 简介 1. ES是一个服务,采用C/S结构 2. 回顾 ES的架构 3. ES支持的客户端连接方式 3.1 REST API ,端口 9200 这种连接方式对应于架构图中的RE ...
- Elasticsearch Java client(ES Client 简介、Java REST Client、Java Client、Spring Data Elasticsearch)
elasticsearch系列七:ES Java客户端-Elasticsearch Java client(ES Client 简介.Java REST Client.Java Client.Spri ...
- [No000091]SVN学习笔记2-TortoiseSVN Client初级操作update(获取)、commit(提交)
SVN简介: 为什么要使用SVN? 程序员在编写程序的过程中,每个程序员都会生成很多不同的版本,这就需要程序员有效的管理代码,在需要的时候可以迅速,准确取出相应的版本. Subversion是什么? ...
- Elasticsearch Java Client连接池
按照Elasticsearch API,在Java端使用是ES服务需要创建Java Client,但是每一次连接都实例化一个client,对系统的消耗很大,即使在使用完毕之后将client close ...
- Elasticsearch本地环境安装和常用操作
本篇文章首发于我的头条号Elasticsearch本地环境安装和常用操作,欢迎关注我的头条号和微信公众号"大数据技术和人工智能"(微信搜索bigdata_ai_tech)获取更多干 ...
- Elasticsearch(ES)API 增删查改常用操作
常用操作 查询所有数据 POST http://192.168.97.173:27009/logstash_test_2018/doc/_search { "query": { & ...
- MongoDB副本集的常用操作及原理
本文是对MongoDB副本集常用操作的一个汇总,同时也穿插着介绍了操作背后的原理及注意点. 结合之前的文章:MongoDB副本集的搭建,大家可以在较短的时间内熟悉MongoDB的搭建和管理. 下面的操 ...
随机推荐
- Spring Boot下启用https
1.需要一个证书,可以自己生成或者购买.下面是我们通过keytool自己生成. 打开运行,输入cmd,进入命令行 输入生成命令: keytool -genkey -alias tomcat -stor ...
- CSS:CSS margin(外边距)
ylbtech-CSS:CSS margin(外边距) 1.返回顶部 1. CSS margin(外边距) CSS margin(外边距)属性定义元素周围的空间. margin margin 清除周围 ...
- [转] JPA 2.0 with EclipseLink - 教程
原文: http://www.vogella.com/articles/JavaPersistenceAPI/article.html Lars Vogel Version 2.2 Copyright ...
- Linux文件映射的反思
1. 思考 多个进程可以加载相同的共享链接库,比如C语言的运行库,加载运行库采用内存映射文件的方式,可以延迟对于文件内容的读入操作. 共享链接库文件,是一个elf格式的库文件,里面会包含多个不同的se ...
- 2019杭电多校第三场hdu6608 Fansblog(威尔逊定理)
Fansblog 题目传送门 解题思路 Q! % P = (P-1)!/(P-1)...(Q-1) % P. 因为P是质数,根据威尔逊定理,(P-1)!%P=P-1.所以答案就是(P-1)((P-1) ...
- The Preliminary Contest for ICPC Asia Nanjing 2019( B H F)
B. super_log 题意:研究一下就是求幂塔函数 %m的值. 思路:扩展欧拉降幂. AC代码: #include<bits/stdc++.h> using namespace std ...
- zabbix--添加host
在client配置好zabbix_agent后,如果server端没配置自动发现,那就需要创建添加host. 首先找到地方.Configuration--Hosts--Create Host 创建ho ...
- win7+ubuntu双系统安装
XP+ubuntu双系统可參考 xp硬盘上安装ubuntu12.04双系统 1.XP安全不再,最终将吾等磨机的人逼上梁山,是时候做一个win7+ubuntu的双系统了. 废话少说,直接进入主题,先腾出 ...
- javascript基础入门之js中的结构分支与循环语句
javascript基础入门之js中的结构分支与循环语句 程序的结构①顺序结构:自上而下:②选择(分支)结构:多条路径,根据不同的条件,只执行其中一个:③循环结构:重复某些代码④配合特定的语句实现选择 ...
- css 画饼图 倒计时圆圈
html <div class="pie"></div> css .pie{ width: 200px; height: 200px; border-rad ...