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. 如何通过Graph+AI的方法打造高精度风控模型

    简介: 阿里云图智能平台在金融行业已经帮助银行.保险等领域客户构建了金融风控.商品推荐.循环担保检测.异常指标监控.违规团伙挖掘等场景,通过穿透行业应用场景,帮助客户基于多维数据做出精准决策. > ...

  2. dotnet 5 让 WPF 调用 WindowsRuntime 方法

    本文告诉大家在 dotnet 5 里,如何使用 WinRT 加上 Microsoft.Windows.SDK 的辅助来调用 WindowsRuntime 方法.当前是 2021.10 此时的 Wind ...

  3. [2]自定义Lua解析方式

    [2]自定义Lua解析方式 在上文中我们学会学会更改加载路径,加载对应文件夹下的Lua脚本. 默认解析加载的lua脚本存在的文件位置非AB包或者Resources文件夹下往往不能随包体更新,这显然不符 ...

  4. 1、Linux基础

    1.centos 安装 2.磁盘分区表示方法 1.2.3.4:主分区,最多4个主分区,后数据为逻辑分区 主分区可以激活,但一个硬盘只能激活一个主分区 被激活的主分区就是用来引导操作系统的主分区 扩展分 ...

  5. CCE云原生混部场景下的测试案例

    本文分享自华为云社区<CCE云原生混部场景下在线任务抢占.压制离线任务CPU资源.保障在线任务服务质量效果测试>,作者:可以交个朋友. 背景 企业的 IT 环境通常运行两大类进程,一类是在 ...

  6. EasyExcel处理Mysql百万数据的导入导出案例,秒级效率,拿来即用!

    一.写在开头 今天终于更新新专栏 <EfficientFarm> 的第二篇博文啦,本文主要来记录一下对于EasyExcel的高效应用,包括对MySQL数据库百万级数据量的导入与导出操作,以 ...

  7. 稳定、省钱的 ClickHouse 读写分离方案:基于 JuiceFS 的主从架构实践

    Jerry 是一家位于北美的科技公司,利用人工智能和机器学习技术,简化汽车保险和贷款的比价和购买流程.在美国,Jerry 的应用在其所属领域排名第一. 随着数据规模的增长,Jerry 在使用 AWS ...

  8. AIRIOT答疑第7期|如何快速提升物联网项目交付速度?

    平台+模板,套上就能用!贼拉快! AIRIOT提供物联网低代码平台+多套行业案例模板,针对于有明确项目的服务商,用平台已经配置好的节点数.功能模块.流程,直接上手干项目! AIRIOT解答: 多套物联 ...

  9. Python:Python对象模型与序列迭代陷阱

    1. Python对象模型与浅拷贝/深拷贝 1.1 Python对象模型和引用 在我们讲解Python的序列修改陷阱之前,先巩固一下Python的对象模型和浅拷贝/深拷贝的知识. 众所周知,Pytho ...

  10. OpenAI“杀疯了”,GPT–4o模型保姆级使用教程!一遍就会!

    5月14日凌晨1点,OpenAI发布了名为GPT-4o 最新的大语言模型,再次引领了人工智能领域的又一创新浪潮,让整个行业都为之震动. 据OpenAI首席技术官穆里-穆拉提(Muri Murati)表 ...