1.pom 导入jar

<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.17.4</version>
</dependency>

ElasticSerarchService.java 根据歌名搜索
package com.redis.demo;

import com.alibaba.fastjson.JSON;
import org.apache.http.HttpHost;
import org.elasticsearch.action.get.GetRequest;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.search.ShardSearchFailure;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.client.indices.GetIndexRequest;
import org.elasticsearch.core.TimeValue;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.rest.RestStatus;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
import org.elasticsearch.search.builder.SearchSourceBuilder; import java.io.IOException;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit; public class ElasticSerarchService {
public static void main(String[] args) throws Exception{
RestHighLevelClient client = getClient(); //查询
//默认ID
GetRequest getRequest = new GetRequest("songs_v2", "_doc", "5EnOMYEBLnSF9_D_wh38");
GetResponse getResponse = client.get(getRequest, RequestOptions.DEFAULT);
System.out.println("根据ID查询="+getResponse.getSourceAsString()); SearchRequest searchRequest = new SearchRequest();
searchRequest.indices("songs_v2"); //查询所有记录
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(QueryBuilders.matchAllQuery());
searchRequest.source(searchSourceBuilder);
// System.out.println("searchSourceBuilder="+ JSON.toJSONString(searchSourceBuilder));
//searchSourceBuilder={"query":{"match_all":{"boost":1.0}}}
System.out.println("searchSourceBuilder="+ searchSourceBuilder); //根据条件查询 歌名
// SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
// sourceBuilder.query(QueryBuilders.termQuery("songName", "tianyi"));
// sourceBuilder.from(0);
// sourceBuilder.size(5);
// sourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS));
// searchRequest.source(sourceBuilder);
//
// //{"from":0,"size":5,"timeout":"60s","query":{"term":{"songName":{"value":"tianyi","boost":1.0}}}}
// //打印输出,而不是JSON.toJSONString方式来输出
// System.out.println("sourceBuilder="+ sourceBuilder); System.out.println("searchRequest="+ JSON.toJSONString(searchRequest));
SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT); // RestStatus status = searchResponse.status();
// TimeValue took = searchResponse.getTook();
// Boolean terminatedEarly = searchResponse.isTerminatedEarly();
// boolean timedOut = searchResponse.isTimedOut();
//
// int totalShards = searchResponse.getTotalShards();
// int successfulShards = searchResponse.getSuccessfulShards();
// int failedShards = searchResponse.getFailedShards();
// for (ShardSearchFailure failure : searchResponse.getShardFailures()) {
// // failures should be handled here
// System.out.println("failures should be handled here");
// } SearchHits hits = searchResponse.getHits();
for (SearchHit hit : hits) {
// do something with the SearchHit String sourceAsString = hit.getSourceAsString();
// Map<String, Object> sourceAsMap = hit.getSourceAsMap();
// String documentTitle = (String) sourceAsMap.get("title");
// List<Object> users = (List<Object>)) sourceAsMap.get("user");
// Map<String, Object> innerObject =
// (Map<String, Object>) sourceAsMap.get("innerObject");
System.out.println("查询结果sourceAsString=" + sourceAsString);
} close(client); } private static void close(RestHighLevelClient client) throws IOException {
client.close();
} private static RestHighLevelClient getClient() {
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(
new HttpHost("localhost", 9200, "http")));
return client;
}
}

IndexTest.java 创建索引

package com.redis.demo.elasticserach;

import com.redis.demo.ElasticSerarchService;
import org.apache.http.HttpHost;
import org.elasticsearch.ElasticsearchException;
import org.elasticsearch.action.ActionListener;
import org.elasticsearch.action.DocWriteRequest;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.client.Cancellable;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.core.TimeValue;
import org.elasticsearch.rest.RestStatus;
import org.elasticsearch.xcontent.XContentBuilder;
import org.elasticsearch.xcontent.XContentFactory;
import org.elasticsearch.xcontent.XContentType; import java.io.IOException;
import java.util.Date;
import java.util.HashMap;
import java.util.Map; public class IndexTest {
private static RestHighLevelClient getClient() {
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(
new HttpHost("localhost", 9200, "http")));
return client;
} private static void close(RestHighLevelClient client) throws IOException {
client.close();
} public static void main(String[] args) throws Exception{
IndexRequest request = new IndexRequest("posts");
request.id("1");
String jsonString = "{" +
"\"user\":\"kimchy\"," +
"\"postDate\":\"2013-01-30\"," +
"\"message\":\"trying out Elasticsearch\"" +
"}";
request.source(jsonString, XContentType.JSON);
// request.routing("routing");
// request.timeout(TimeValue.timeValueSeconds(1));
// request.timeout("1s"); RestHighLevelClient client = getClient();
IndexResponse indexResponse = client.index(request, RequestOptions.DEFAULT);
System.out.println("indexResponse1="+indexResponse.getResult()); //无法重复创建索引
Map<String, Object> jsonMap = new HashMap<>();
jsonMap.put("user", "kimchy");
jsonMap.put("postDate", new Date());
jsonMap.put("message", "trying out Elasticsearch");
IndexRequest indexRequest = new IndexRequest("posts")
.id("2").source(jsonMap); indexResponse = client.index(indexRequest, RequestOptions.DEFAULT);
System.out.println("indexResponse2="+indexResponse.getResult()); XContentBuilder builder = XContentFactory.jsonBuilder();
builder.startObject();
{
builder.field("user", "kimchy");
builder.timeField("postDate", new Date());
builder.field("message", "trying out Elasticsearch");
}
builder.endObject();
IndexRequest indexRequest3 = new IndexRequest("posts")
.id("3").source(builder);
indexResponse = client.index(indexRequest3, RequestOptions.DEFAULT);
System.out.println("indexResponse3="+indexResponse.getResult());
/**
* if (indexResponse.getResult() == DocWriteResponse.Result.CREATED) {
*
* } else if (indexResponse.getResult() == DocWriteResponse.Result.UPDATED) {
*
* }
*/ IndexRequest indexRequest4 = new IndexRequest("posts")
.id("4")
.source("user", "kimchy",
"postDate", new Date(),
"message", "trying out Elasticsearch"); ActionListener listener = new ActionListener<IndexResponse>() {
@Override
public void onResponse(IndexResponse indexResponse) {
System.out.println("异步通知结果result =" + indexResponse.getResult());
System.out.println("异步通知结果id =" + indexResponse.getId()); } @Override
public void onFailure(Exception e) {
System.out.println("异步通知结果异常啦" + e.getMessage());
}
}; //异步方式
Cancellable cancellable = client.indexAsync(indexRequest4, RequestOptions.DEFAULT, listener); //处理异常的情况,id重复 主键冲突
IndexRequest request5 = new IndexRequest("posts")
.id("1")
.source("field", "value")
.setIfSeqNo(10L)
.setIfPrimaryTerm(20);
try {
IndexResponse response = client.index(request5, RequestOptions.DEFAULT);
} catch(ElasticsearchException e) {
if (e.status() == RestStatus.CONFLICT) {
System.out.println("5主键冲突啦" + e.getMessage()); }
} IndexRequest request6 = new IndexRequest("posts")
.id("1")
.source("field", "value")
.opType(DocWriteRequest.OpType.CREATE);
try {
IndexResponse response = client.index(request6, RequestOptions.DEFAULT);
} catch(ElasticsearchException e) {
if (e.status() == RestStatus.CONFLICT) {
System.out.println("6主键冲突啦" + e.getMessage());
}
} //关闭
close(client); }
}

GetRequestTest.java  根据ID查询

package com.redis.demo.elasticserach;

import com.redis.demo.ElasticSerarchService;
import org.apache.http.HttpHost;
import org.elasticsearch.ElasticsearchException;
import org.elasticsearch.action.get.GetRequest;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.rest.RestStatus; import java.io.IOException;
import java.util.Map; public class GetRequestTest {
private static RestHighLevelClient getClient() {
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(
new HttpHost("localhost", 9200, "http")));
return client;
} private static void close(RestHighLevelClient client) throws IOException {
client.close();
} public static void main(String[] args) throws Exception{
GetRequest getRequest = new GetRequest(
"posts",
"100"); try {
RestHighLevelClient client = getClient();
GetResponse getResponse = client.get(getRequest, RequestOptions.DEFAULT);
String index = getResponse.getIndex();
String id = getResponse.getId();
if (getResponse.isExists()) {
long version = getResponse.getVersion();
String sourceAsString = getResponse.getSourceAsString();
// Map<String, Object> sourceAsMap = getResponse.getSourceAsMap();
// byte[] sourceAsBytes = getResponse.getSourceAsBytes();
System.out.println("sourceAsString=" + sourceAsString);
} else {
System.out.println("getResponse不存在");
} //关闭
close(client); } catch (ElasticsearchException e) {
System.out.println("异常"+e.status());
if (e.status() == RestStatus.NOT_FOUND) {
System.out.println("未找到"+e.status());
}
}
}
}

java elasticsearch-rest-high-level-client 根据歌名搜索,创建索引,根据索引ID搜索的更多相关文章

  1. springboot整合elasticsearch(基于es7.2和官方high level client)

    前言 最近写的一个个人项目(传送门:全终端云书签)中需要用到全文检索功能,目前 mysql,es 都可以做全文检索,mysql 胜在配置方便很快就能搞定上线(参考这里),不考虑上手难度,es 在全文检 ...

  2. springboot集成es7(基于high level client)

    环境: ES: 7.12.0 1.springboot工程引入es相关jar <dependency> <groupId>org.elasticsearch</group ...

  3. ElasticSearch的javaAPI之Client

    翻译的原文:http://www.elasticsearch.org/guide/en/elasticsearch/client/java-api/current/client.html#node-c ...

  4. Java Elasticsearch新手入门教程

    概要: 1.使用Eclipse搭建Elasticsearch详情参考下面链接 2.Java Elasticsearch 配置 3.ElasticSearch Java Api(一) -添加数据创建索引 ...

  5. java.lang.RuntimeException: com.netflix.client.ClientException: Load balancer does not have available server for client: service-one

    一.异常信息 java.lang.RuntimeException: com.netflix.client.ClientException: Load balancer does not have a ...

  6. spring .cloud ------------java.lang.RuntimeException: com.netflix.client.ClientException,Caused by: java.lang.IllegalArgumentException: MIME type may not contain reserved characters

    1.问题的发生 Feign在默认情况下使用的是JDK原生的URLConnection发送HTTP请求,没有连接池,但是对每个地址会保持一个长连接,即利用HTTP的persistence connect ...

  7. java.lang.NoClassDefFoundError: org.androidpn.client.PersistentConnectionListener

    在运行AndroidpnClient项目时出现了java.lang.NoClassDefFoundError: org.androidpn.client.PersistentConnectionLis ...

  8. [解决]java.lang.IllegalArgumentException: Bad level "DEBUG"

    Tomcat启动报错,搞得烦的一比.常规思维就会迷瞪,谁让tomcat的日志级别特殊ne.... http://tomcat.apache.org/tomcat-7.0-doc/ 错误现象: Hand ...

  9. 上机题目(0基础)- Java网络操作-Socket实现client和server端通信二(Java)

    上一节实现了client像server端发送请求.本节将实现server端向client回传信息.实现原理非常easy,在原来的基础上.在server端实现输出流,在client实现输入流就可以,详细 ...

  10. 上机题目(0基础)- Java网络操作-Socket实现client和server端通信(Java)

    非常多刚開始学习的人对于java网络通信不太熟悉.对相关概念也不太明确,这里我们主要实现一下socket通信,socket通信在java中应用十分广泛.比如QQ和MSN等都是基于socket通信的,什 ...

随机推荐

  1. DataWorks搬站方案:Azkaban作业迁移至DataWorks

    简介: DataWorks迁移助手提供任务搬站功能,支持将开源调度引擎Oozie.Azkaban.Airflow的任务快速迁移至DataWorks.本文主要介绍如何将开源Azkaban工作流调度引擎中 ...

  2. [FAQ] Cordova 模拟器中不能访问域名, 未联网 ?

    首先保证电脑已联网,然后打开模拟器的浏览器输入常用网址,看看是否能够联网. 如果访问失败,在本机中在 cmd 中 ping www.baidu.com 获得百度的ip地址,然后在浏览器中输入 http ...

  3. TheWay2Hack

    coding 阶段一 打基础. CS61A:现在进度落后一个月,递归部分让我焦头烂额.所以将完成时间延后了一个月,截止到6月7号搞完. CSAPP:卡在datalab,按照3月18号开始,预计7月1号 ...

  4. 实验1 在MAX10 FPGA上实现组合逻辑

    实验1 在MAX10 FPGA上实现组合逻辑 实验前的准备工作:参照讲义步骤安装Quartus,Modelsim和System Builder.阅读材料:1)推荐的文件组织形式:2)Verilog 1 ...

  5. Go-Zero从0到1实现微服务项目开发(二)

    前言 书接上回,继续更新GoZero微服务实战系列文章. 上一篇被GoZero作者万总点赞了,更文动力倍增,也建议大家先看巧一篇,欢迎粉丝股东们三连支持一波:Go-zero微服务快速入门和最佳实践(一 ...

  6. 前端使用 Konva 实现可视化设计器(8)- 预览框

    请大家动动小手,给我一个免费的 Star 吧~ 大家如果发现了明显的 Bug,可以提 Issue 哟~ 这一章我们实现一个预览框,实时.可交互定位的. github源码 gitee源码 示例地址 预览 ...

  7. 程序是怎样跑起来的_第一章-对程序员来说CPU是什么

    通过对第一章的学习,我了解了大体上CPU可以说是电脑的"大脑",即中央处理器.从功能来看可以分为寄存器,控制器,运算器和时钟.在这四个部分中,寄存器是最值得程序员注意的.总的来说, ...

  8. ITIL4服务价值系统(SVS)与莫比乌斯环:无限服务优化的拓扑之旅

    莫比乌斯环:单一而无限的象征 莫比乌斯环,这个拓扑学上的奇观,以其独特的一体两面特性,完美地映射了ITIL4服务价值系统的精髓.它象征着无限.统一和连续性,提示我们看待事物时应超越传统二元对立的视角, ...

  9. 使用 Docker 部署 TaleBook 私人书籍管理系统

    1)项目介绍 GitHub:https://github.com/talebook/talebook Talebook 是一个简洁但强大的私人书籍管理系统.它基于 Calibre 项目构建,具备书籍管 ...

  10. kettle使用3-增量同步(插入的时候判断数据是否存在,存在就更新,不存在就插入)

    1.新建转换 2.在DB连接中,新建2个数据库连接 3.在输入中,新建:表输入 4.在输入中,新建:表输入 5.在输出中,新建:插入/更新 说明:更新字段: 是说更新目的表时候,哪些列更新,哪些不更新 ...