package com.es.dao;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.elasticsearch.action.search.SearchRequestBuilder;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentFactory;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.elasticsearch.search.highlight.HighlightBuilder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import com.es.common.utils.CombinedQueryResult;
import com.es.common.utils.StringUtil;
import com.es.entity.Entity;
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import io.searchbox.client.JestClient;
import io.searchbox.client.JestClientFactory;
import io.searchbox.client.JestResult;
import io.searchbox.client.JestResultHandler;
import io.searchbox.client.config.HttpClientConfig;
import io.searchbox.core.Bulk;
import io.searchbox.core.BulkResult;
import io.searchbox.core.ClearScroll;
import io.searchbox.core.Count;
import io.searchbox.core.CountResult;
import io.searchbox.core.Delete;
import io.searchbox.core.DocumentResult;
import io.searchbox.core.Index;
import io.searchbox.core.Search;
import io.searchbox.core.SearchResult;
import io.searchbox.core.SearchResult.Hit;
import io.searchbox.core.SearchScroll;
import io.searchbox.indices.ClearCache;
import io.searchbox.indices.CreateIndex;
import io.searchbox.indices.DeleteIndex;
import io.searchbox.indices.Optimize;
import io.searchbox.indices.aliases.AddAliasMapping;
import io.searchbox.indices.aliases.GetAliases;
import io.searchbox.indices.aliases.ModifyAliases;
import io.searchbox.indices.mapping.GetMapping;
import io.searchbox.indices.mapping.PutMapping;
import io.searchbox.indices.settings.GetSettings;
import io.searchbox.indices.settings.UpdateSettings;
import io.searchbox.indices.template.GetTemplate;
import io.searchbox.indices.template.PutTemplate;
import io.searchbox.params.Parameters;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Component
public class JestClientDao<T> {
/**
* jest客户端
*/
@Autowired
private JestClient jestClient;
/**
* 滚动ID key
*/
private static final String SCORLL_ID_KEY = "_scroll_id";
/**
* 命中集 key
*/
private static final String QUERY_HITS_KEY = "hits";
/**
* 数据源 key
*/
private static final String SOURCE_KEY = "_source";
/**
* 搜索上下文的时间,用来支持该批次
*/
private static final String SCROLL_ALIVE_TIME = "5m";
public void saveEntity(Entity entity) {
Index index = new Index.Builder(entity).index(Entity.INDEX_NAME).type(Entity.TYPE).build();
try {
jestClient.execute(index);
log.info("ES 插入完成");
} catch (IOException e) {
e.printStackTrace();
log.error(e.getMessage());
}
}
/**
* 批量保存内容到ES
*/
public void saveEntity(List<Entity> entityList) {
Bulk.Builder bulk = new Bulk.Builder();
for (Entity entity : entityList) {
Index index = new Index.Builder(entity).index(Entity.INDEX_NAME).type(Entity.TYPE).build();
bulk.addAction(index);
}
try {
jestClient.execute(bulk.build());
log.info("ES 插入完成");
} catch (Exception e) {
log.error("ES 插入Exception", e.getMessage());
}
}
/**
* 在ES中搜索内容
*/
public List<Entity> searchEntity(String searchContent) {
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
// searchSourceBuilder.query(QueryBuilders.queryStringQuery(searchContent));
// searchSourceBuilder.field("name");
searchSourceBuilder.query(QueryBuilders.matchQuery("name", searchContent));
Search search = new Search.Builder(searchSourceBuilder.toString()).addIndex(Entity.INDEX_NAME)
.addType(Entity.TYPE).build();
try {
JestResult result = jestClient.execute(search);
return result.getSourceAsObjectList(Entity.class);
} catch (IOException e) {
log.error(e.getMessage());
e.printStackTrace();
}
return null;
}
/**
* 创建索引
* @param indexName 索引名称
*/
public boolean createIndex(String indexName) {
boolean result = false;
try {
JestResult jestResult = jestClient.execute(new CreateIndex.Builder(indexName).build());
if (jestResult != null && jestResult.isSucceeded()) {
result = true;
}
} catch (IOException e) {
log.error("EsJestClient-createIndex error", e);
}
return result;
}
/**
* 删除index
*
* @param indexName
* 索引名称
*/
public boolean deleteIndex(String index) {
boolean flag = false;
try {
JestResult jestResult = jestClient.execute(new DeleteIndex.Builder(index).build());
flag = jestResult.isSucceeded();
log.info("deleteIndex result:{}" + jestResult.isSucceeded());
} catch (IOException e) {
log.error("deleteIndex fail", e);
}
return flag;
}
/**
* Count文档
* @param jestClient
* @param indexName
* @param typeName
* @param query
* @return
* @throws Exception
*/
public Double count(String indexName, String typeName, String query) throws Exception {
Count count = new Count.Builder()
.addIndex(indexName)
.addType(typeName)
.query(query)
.build();
CountResult results = jestClient.execute(count);
return results.getCount();
}
/**
* Delete文档
* @param jestClient
* @param indexName
* @param typeName
* @param id
* @return
* @throws Exception
*/
public boolean deleteDocument(String indexName, String typeName, String id) throws Exception {
DocumentResult dr = jestClient.execute(new Delete.Builder(id).index(indexName).type(typeName).build());
return dr.isSucceeded();
}
/**
* 设置index的mapping(设置数据类型和分词方式)
*
* @param index
* @param type
* @param mappingStr
* Gson串 {"service_log": {"properties": {"id": {"type":
* "string"},"service": {"type": "string"},"app_code": {"type":
* "string"}}}}
* @return
*/
public boolean createIndexMapping(String index, String type, String mappingStr) {
boolean result = false;
// mappingString为拼接好的json格式的mapping串
PutMapping putMapping = new PutMapping.Builder(index, type, mappingStr).build();
try {
JestResult jestResult = jestClient.execute(putMapping);
if (jestResult != null && jestResult.isSucceeded()) {
result = true;
}
} catch (IOException e) {
log.error("EsJestClient-createIndexMapping error", e);
}
return result;
}
/**
* 获取指定索引信息,获取index的mapping
*
* @param indexName
* @param typeName
* @return
*/
public String getMapping(String indexName, String typeName) {
GetMapping.Builder builder = new GetMapping.Builder();
builder.addIndex(indexName).addType(typeName);
String res = null;
try {
JestResult result = jestClient.execute(builder.build());
if (result != null && result.isSucceeded()) {
res = result.getSourceAsObject(JsonObject.class).toString();
}
} catch (Exception e) {
log.error("es get mapping Exception ", e);
}
return res;
}
/**
* 获取索引index设置setting
*
* @param indexName
* @return
*/
public boolean getIndexSettings(String indexName) {
try {
JestResult jestResult = jestClient.execute(new GetSettings.Builder().addIndex(indexName).build());
log.info(
没有合适的资源?快使用搜索试试~ 我知道了~
springboot与es整合例子
共46个文件
java:17个
class:14个
prefs:3个
4星 · 超过85%的资源 需积分: 47 80 下载量 200 浏览量
2018-08-01
09:57:19
上传
评论 2
收藏 63KB ZIP 举报
温馨提示
springboot与es整合例子,基本的增删改查操作。。。。
资源推荐
资源详情
资源评论
收起资源包目录
spring_es.zip (46个子文件)
spring_es
.project 767B
pom.xml 2KB
transaction-logs
tmlog4.log 4B
10.157.212.36.tm4.epoch 8B
target
test-classes
com
es
spring_es
AppTest.class 9KB
m2e-wtp
web-resources
META-INF
maven
com.es
spring_es
pom.xml 2KB
pom.properties 228B
MANIFEST.MF 308B
classes
application.yml 421B
com
es
dao
JestClientInnerDao.class 5KB
JestClientDao$1.class 1KB
JestClientDao.class 20KB
controller
ESController.class 3KB
common
utils
StringUtil.class 2KB
CombinedQueryResult.class 1KB
service
CityESService.class 400B
impl
JestServiceImpl.class 4KB
IJestService.class 1KB
entity
Entity.class 1KB
App.class 1KB
db
es
base
dao
common
util
GsonUtil$1.class 567B
GsonUtil.class 2KB
.settings
org.eclipse.core.resources.prefs 119B
org.eclipse.jdt.core.prefs 243B
org.eclipse.m2e.core.prefs 90B
src
test
resources
java
com
es
spring_es
AppTest.java 8KB
main
resources
application.yml 421B
java
com
es
dao
JestClientInnerDao.java 3KB
JestClientDao.java 21KB
controller
ESController.java 2KB
common
utils
StringUtil.java 2KB
CombinedQueryResult.java 424B
service
IJestService.java 3KB
ESSearchService.java 2KB
CityESService.java 260B
impl
ESSearchServiceImpl.java 2KB
JestServiceImpl.java 6KB
entity
Entity.java 770B
db
es
ESConfig.java 3KB
JpaConfig.java 2KB
App.java 670B
base
dao
ESRepository.java 6KB
common
util
GsonUtil.java 782B
.classpath 1KB
data
elasticsearch
nodes
0
node.lock 0B
_state
global-6.st 117B
共 46 条
- 1
资源评论
- 尚格云顿2019-01-04值得学习,不错
- 牵牵手-△1222019-01-23初学者可以看看!
- awindbird_19822022-02-24代码太老了。
zhangbingqian628
- 粉丝: 0
- 资源: 13
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 王锐的《OpenSceneGraph 3.0 Beginner's Guide》中文翻译版,个人读了翻译的很不错!值得推荐
- scr ubuntu上传
- AI Python编程学习课件-第6章深度学习
- STM32单片机FPGA毕设电路原理论文报告液晶显示模块与8031单片机的接口电路及编程
- STM32单片机FPGA毕设电路原理论文报告液晶航向指示器接口电路设计
- Pytorch深度学习入门与实战2024
- STM32单片机FPGA毕设电路原理论文报告野战救护车手术台稳定液压系统及其自动控制
- STM32单片机FPGA毕设电路原理论文报告压延机卷取调速装置改造
- STM32单片机FPGA毕设电路原理论文报告形状记忆合金驱动的微电脑密码锁的设计
- HTML小游戏27 - Chuck Chicken 魔法蛋网页游戏源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功