创建索引
CreateIndexRequest index = new CreateIndexRequest("book");
CreateIndexResponse createIndexResponse = restHighLevelClient.indices().create(index, RequestOptions.DEFAULT);
boolean acknowledged = createIndexResponse.isAcknowledged();
System.out.println(acknowledged);
查询索引
GetIndexRequest request=new GetIndexRequest("user");
GetIndexResponse getIndexResponse = restHighLevelClient.indices().get(request, RequestOptions.DEFAULT);
System.out.println(getIndexResponse.getAliases());
System.out.println(getIndexResponse.getMappings());
System.out.println(getIndexResponse.getSettings());
删除索引
DeleteIndexRequest request=new DeleteIndexRequest("book");
AcknowledgedResponse delete = restHighLevelClient.indices().delete(request, RequestOptions.DEFAULT);
System.out.println(delete.isAcknowledged());
添加文档
IndexRequest request=new IndexRequest();
//不指定id则自动创建id
request.index("book").id("1011");
Book book=new Book();
// book.setId(1);
book.setName("书籍‘");
String s = JSON.toJSONString(book);
request.source(s,XContentType.JSON);
IndexResponse index = restHighLevelClient.index(request, RequestOptions.DEFAULT);
System.out.println(index.getResult());
更新
UpdateRequest request=new UpdateRequest();
request.index("book").id("1011");
request.doc(XContentType.JSON,"name","jj");
UpdateResponse update = restHighLevelClient.update(request, RequestOptions.DEFAULT);
System.out.println(update.getResult());
实用的更新(查询后更新)
UpdateByQueryRequest updateByQueryRequest = new UpdateByQueryRequest("索引名");
updateByQueryRequest.setQuery(new TermQueryBuilder("esopEnterpriseId", information.getTktEnterpriseInformationId()));
Map params = new HashMap<>();
params.put("dataState", information.getDataState());
params.put("dataStateStr",information.getDataStateStr());
script设置的是脚本, Script 构造器(脚本类型, 语言, 命令, 传入参数)
//脚本类型分为: ScriptType.INLINE 和 ScriptType.STORED
//lang语言 painless 是es自带的
Script script = new Script(ScriptType.INLINE, "painless", "ctx._source.dataState=params.dataState;ctx._source.dataStateStr=params.dataStateStr", params);
updateByQueryRequest.setScript(script);
restHighLevelClient.updateByQuery(updateByQueryRequest, RequestOptions.DEFAULT);
多条件查询
SearchRequest request1 = new SearchRequest("titems");
//构建搜索条件
SearchSourceBuilder builder = new SearchSourceBuilder();
//按照颜色查询方法,其中keyword表示不分词匹配,把该词当成一个整体
//QueryBuilders.matchQuery()表示模糊查询
//QueryBuilders.termQuery()表示精确查询
//条件判断,如果传入的属性为空的话则不执行该查询条件
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
if(null != req.getItem_brand()){
boolQueryBuilder.must(QueryBuilders.matchQuery("item_brand.keyword", req.getItem_brand()));
}
if(null != req.getItem_color()){
boolQueryBuilder.must(QueryBuilders.matchQuery("item_color.keyword", req.getItem_color()));
}
//QueryBuilders.boolQuery().should(QueryBuilders.matchQuery()).should()
//单条件查询
// MatchQueryBuilder matchQueryBuilder = QueryBuilders.matchQuery("item_color.keyword", req.getItem_color());
builder.query(boolQueryBuilder);
查询后排序然后转为对象
//1. 创建Request
SearchRequest request = new SearchRequest(EsopEnterpriseInformationConstant.ES_ESOP_ENTERPRISE_INDEX_NAME);
//2. 指定查询条件
SearchSourceBuilder builder = new SearchSourceBuilder();
builder.query(QueryBuilders.matchAllQuery());
builder.size(10000);
builder.sort("busiRegCityCode", SortOrder.ASC);
builder.sort("busiRegCountyCode",SortOrder.ASC);
builder.sort("busiRegGridCode",SortOrder.ASC);
request.source(builder);
//3. 执行查询
SearchResponse resp = null;
try {
resp = restHighLevelClient.search(request, RequestOptions.DEFAULT);
} catch (IOException e) {
e.printStackTrace();
}
List list=new ArrayList<>();
for (SearchHit hit : resp.getHits().getHits()) {
String sourceAsString = hit.getSourceAsString();
ESEnterpriseInformation information = JSONObject.parseObject(sourceAsString, ESEnterpriseInformation.class);
list.add(information);
}