docker运行elasticsearch

docker pull elasticsearch:7.8.1
docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.8.1

pom

<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>7.8.1</version>
</dependency> <dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.8.1</version>
</dependency> <dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.12</version>
</dependency>

配置文件

/**
* ES builder
*/
public class EsConfig {
/**
* es restful client builder
* @return restful client
*/
@Bean
public RestClientBuilder restClientBuilder(){
// 设置IP
HttpHost esHost = new HttpHost("localhost", 9200); RestClientBuilder restClientBuilder = RestClient.builder(esHost);
// setPassword(restClientBuilder);
// setTImeout(restClientBuilder); return restClientBuilder;
} /**
* 设置超时时间
*/
private void setTImeout(RestClientBuilder restClientBuilder) {
restClientBuilder.setRequestConfigCallback(new RestClientBuilder.RequestConfigCallback() {
@Override
public RequestConfig.Builder customizeRequestConfig(RequestConfig.Builder builder) {
return builder.setConnectTimeout(1000)
.setSocketTimeout(1000);
}
});
} /**
* 设置ES密码
*/
private void setPassword(RestClientBuilder restClientBuilder) {
// 设置密码
CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("userName", "password")); restClientBuilder.setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
@Override
public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpAsyncClientBuilder) {
return httpAsyncClientBuilder
.setDefaultCredentialsProvider(credentialsProvider)
.setDefaultIOReactorConfig(
IOReactorConfig.custom()
.setIoThreadCount(4)
.build()
);
}
});
}
}

工具类

public class EsTools {
public static final String INDEX = "search"; private RestClientBuilder restClientBuilder;
private RestHighLevelClient restHighLevelClient; public EsTools(){
EsConfig esConfig = new EsConfig();
restClientBuilder = esConfig.restClientBuilder();
restHighLevelClient = new RestHighLevelClient(restClientBuilder);
} /**
* 通过id获取数据
*/
public GetResponse get(String id) throws IOException {
GetRequest request = new GetRequest(INDEX, id);
return restHighLevelClient.get(request, RequestOptions.DEFAULT);
} /**
* 删除index
*/
public DeleteResponse deleteIndex(String index) throws IOException {
DeleteRequest deleteRequest = new DeleteRequest(INDEX);
return restHighLevelClient.delete(deleteRequest, RequestOptions.DEFAULT);
} /**
* 插入json数据
*/
public IndexResponse insertJson(String content) throws IOException {
IndexRequest indexRequest = new IndexRequest(INDEX);
indexRequest.source(content, XContentType.JSON);
// indexRequest.id("4");
return restHighLevelClient.index(indexRequest, RequestOptions.DEFAULT);
} /**
* 批量插入json数据
*/
public BulkResponse insertBatchJson(List<String> contentList) throws IOException{
BulkRequest bulkRequest = new BulkRequest();
IndexRequest indexRequest;
for(String item : contentList){
indexRequest = new IndexRequest(INDEX);
indexRequest.source(item, XContentType.JSON);
bulkRequest.add(indexRequest);
}
return restHighLevelClient.bulk(bulkRequest, RequestOptions.DEFAULT);
} public SearchResponse search(QueryBuilder queryBuilder) throws IOException {
SearchRequest request = new SearchRequest();
request.indices(INDEX);
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(queryBuilder);
request.source(searchSourceBuilder); return restHighLevelClient.search(request, RequestOptions.DEFAULT); } public static void main(String[] args) throws IOException {
// 批量插入
String content = "{\n" +
" \"search_id\":1,\n" +
" \"search_type\":\"task\",\n" +
" \"title\":\"保单贷款是什么\",\n" +
" \"descript\":\"保单贷款是以寿险保单的现金价值作担保,从保险公司获得的贷款。这类贷款的一次可贷款金额取决于保单的有效年份;保单签发时被保人的年龄、死亡赔偿金额。\"\n" +
"}";
EsTools esTools = new EsTools();
List<String> contentList = new ArrayList<>();
contentList.add(content);
contentList.add(content);
BulkResponse indexResponse = esTools.insertBatchJson(contentList);
System.out.println(indexResponse.toString()); String query = "贷款";
esTools = new EsTools();
QueryBuilder search = esTools.searchBuild(query);
SearchResponse response = esTools.search(search);
System.out.println(response.toString()); if(response.getHits().getHits() != null) {
Map result = response.getHits().getHits()[0].getSourceAsMap();
System.out.println(result.toString());
}
} private QueryBuilder searchBuild(String query){
/**
* {
* "query": {
* "bool": {
* "must": [
* {
* "multi_match":{
* "query":"担保",
* "fields": ["title", "descript"]
* }
* },
* {
* "term":{
* "search_type":"batch"
* }
* }
* ]
* }
* }
* }
*/
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("search_type", "task");
boolQueryBuilder.filter(termQueryBuilder); MultiMatchQueryBuilder multiMatchQueryBuilder = QueryBuilders.multiMatchQuery(query, "title", "descript");
boolQueryBuilder.must(multiMatchQueryBuilder);
return boolQueryBuilder;
}
}

elasticsearch java工具类的更多相关文章

  1. java工具类系列 (四.SerializationUtils)

    java工具类系列 (四.SerializationUtils) SerializationUtils该类为序列化工具类,也是lang包下的工具,主要用于序列化操作 import java.io.Se ...

  2. Java工具类——通过配置XML验证Map

    Java工具类--通过配置XML验证Map 背景 在JavaWeb项目中,接收前端过来的参数时通常是使用我们的实体类进行接收的.但是呢,我们不能去决定已经搭建好的框架是怎么样的,在我接触的框架中有一种 ...

  3. 排名前 16 的 Java 工具类

    在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码. 一. ...

  4. 排名前16的Java工具类

    原文:https://www.jianshu.com/p/9e937d178203 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法 ...

  5. 第一章 Java工具类目录

    在这一系列博客中,主要是记录在实际开发中会常用的一些Java工具类,方便后续开发中使用. 以下的目录会随着后边具体工具类的添加而改变. 浮点数精确计算 第二章 Java浮点数精确计算 crc32将任意 ...

  6. java工具类之按对象中某属性排序

    import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang ...

  7. 干货:排名前16的Java工具类

    在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码. 一. ...

  8. Java工具类:给程序增加版权信息

       我们九天鸟的p2p网贷系统,基本算是开发完成了.   现在,想给后端的Java代码,增加版权信息.   手动去copy-paste,太没有技术含量. 于是,写了个Java工具类,给Java源文件 ...

  9. 常用高效 Java 工具类总结

    一.前言 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码 ...

随机推荐

  1. Monster Audio 使用教程 (五) 添加区域效果器

    我们可以在音轨上,某一个时间区域内,添加一组效果器,这组效果器,只有在播放指针进入它的区域时,效果器才可以处理声音 首先,先在时间刻度上,设定好时间范围 然后,在音轨的波形区域点击右键,然后点击[添加 ...

  2. Spring的SchedulingConfigurer实现定时任务

    前提:在做业务平台的时候我们经常会遇到,某些跟时间打交道的需要修改状态,比如说在时间区间之前,属于未生效状态,区间之内属于有效期,区间之后,属于过期,或者需要每天 每周 每月,甚至是年为单位的做一些固 ...

  3. git问题解决

    1.如果系统中有一些配置文件在服务器上做了配置修改,然后后续开发又新添加一些配置项的时候, 在发布这个配置文件的时候,会发生代码冲突: error: Your local changes to the ...

  4. python爬虫获取localStorage中的数据(获取token)

    # 此为获取东航登录时的token(经分析js得出此token存储于localstorage中) browser = webdriver.Chrome(executable_path='xxxx')b ...

  5. Elasticsearch必知必会的干货知识二:ES索引操作技巧

    该系列上一篇文章<Elasticsearch必知必会的干货知识一:ES索引文档的CRUD> 讲了如何进行index的增删改查,本篇则侧重讲解说明如何对index进行创建.更改.迁移.查询配 ...

  6. Redis服务之常用配置(二)

    上一篇博客我们聊了下redis的INCLUDE.NETWORK.GENERAL配置段相关配置和说明,回顾请参考:https://www.cnblogs.com/qiuhom-1874/p/133831 ...

  7. 安排上了!PC人脸识别登录,出乎意料的简单

    本文收录在个人博客:www.chengxy-nds.top,技术资源共享. 之前不是做了个开源项目嘛,在做完GitHub登录后,想着再显得有逼格一点,说要再加个人脸识别登录,就我这佛系的开发进度,过了 ...

  8. PHP tanh() 函数

    实例 返回不同数的双曲正切: <?php高佣联盟 www.cgewang.comecho(tanh(M_PI_4) . "<br>");echo(tanh(0.5 ...

  9. PHP defined() 函数

    实例 检查某常量是否存在: <?phpdefine("GREETING","Hello you! How are you today?");echo de ...

  10. PHP md5_file() 函数

    实例 计算文本文件 "test.txt" 的 MD5 散列: <?php高佣联盟 www.cgewang.com$filename = "test.txt" ...