1.jar包
compile group: 'org.elasticsearch.client', name: 'transport', version: '5.1.1' compile group: 'io.searchbox', name: 'jest', version: '5.3.3'
2.基本介绍
1.index 为库名称(相当于数据库库名)
2.type 为表明(相当于数据库中的表)
3.数据处理
1.数据添加
@Autowired
private JestClient jestClient;
@Override
public void saveEntity(Picbook entity) {
Index index = new Index.Builder(entity).index(Constants.ES_SEARCH_INDEX).type(Constants.ES_SEARCH_TYPE_PICBOOK).build();
try {
jestClient.execute(index);
} catch (IOException e) {
e.printStackTrace();
}
}
2.数据删除
public boolean deleteDoc(String indexId, String indexName, String indexType) {
Delete delete = new Delete.Builder(indexId).index(indexName).type(indexType).build();
JestResult result = null ;
try {
result = jestClient.execute(delete);
if (result != null && !result.isSucceeded()) {
throw new RuntimeException(result.getErrorMessage()+"删除文档失败!");
}
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}
3.数据查询
public Map<String,Object> queryAll(PageInfo pageObj,String name, String title, String content,String description){
SearchResult result = queryAll(pageObj, Constants.ES_SEARCH_INDEX, Constants.ES_SEARCH_TYPE_PICBOOK,name,title,content,description,null);
SearchResult resultNew=queryAllNew(Constants.ES_SEARCH_INDEX, Constants.ES_SEARCH_TYPE_PICBOOK,name,title,content,description,null);
Map<String, Object> map = new HashMap<>();
if(resultNew.getTotal()!=null && resultNew.getTotal()!=null) {
List<SearchResult.Hit<Picbook, Void>> list = result.getHits(Picbook.class);
List<Picbook> lc = new ArrayList<Picbook>();
for (int i = 0; i < list.size(); i++) {
lc.add(list.get(i).source);
System.out.println("score:" + list.get(i).score);
System.out.println("source:" + list.get(i).source.getName());
}
map.put("list", lc);
map.put("total", resultNew.getTotal());
}
return map;
}
//分页查询
SearchResult result;
public <T> SearchResult queryAll(PageInfo pageInfo, String index, String type,String name,String title,String content,String description,String itemTitle){
try{
Map<String,String> map=new HashMap<>();
if(title!=null) {
map.put(title, name);
}
map.put(content,name);
if(itemTitle!=null) {
map.put(itemTitle, name);
}
if(description!=null) {
map.put(description, name);
}
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
for (String in : map.keySet()) {
String str = map.get(in);//得到每个key多对用value的值
boolQueryBuilder.should(QueryBuilders.matchQuery(in,str));
}
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(boolQueryBuilder);
searchSourceBuilder.from((pageInfo.getPageNo()-1)*pageInfo.getPageSize());
searchSourceBuilder.size(pageInfo.getPageSize());
Search search = new Search.Builder(searchSourceBuilder.toString())
.addIndex(index).addType(type).build();
result=jestClient.execute(search);
}catch(Exception e){
System.out.println(e.getMessage());
}
return result;
}
//负责查询总数量
public <T> SearchResult queryAllNew(String index, String type,String name,String title,String content,String description,String itemTitle){
try{
Map<String,String> map=new HashMap<>();
if(title!=null) {
map.put(title, name);
}
map.put(content,name);
if(description!=null) {
map.put(description, name);
}
if(itemTitle!=null) {
map.put(itemTitle, name);
}
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
for (String in : map.keySet()) {
String str = map.get(in);//得到每个key多对用value的值
boolQueryBuilder.should(QueryBuilders.matchQuery(in,str));
}
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(boolQueryBuilder);
Search search = new Search.Builder(searchSourceBuilder.toString())
.addIndex(index).addType(type).build();
result=jestClient.execute(search);
}catch(Exception e){
System.out.println(e.getMessage());
}
return result;
}