返回
Elasticsearch业务常用21种语句操作附带Java API代码
后端
2023-12-19 23:02:39
Elasticsearch业务常用21种语句操作附带Java API代码
Elasticsearch是一个开源的分布式搜索引擎,它具有高扩展性、高可用性和高性能等特点,是目前最流行的搜索引擎之一。在实际的业务场景中,我们经常需要对Elasticsearch进行各种操作,比如创建索引、删除索引、添加文档、删除文档、查询文档等。
1. 创建索引
CreateIndexRequest request = new CreateIndexRequest("my_index");
CreateIndexResponse response = client.indices().create(request);
2. 删除索引
DeleteIndexRequest request = new DeleteIndexRequest("my_index");
DeleteIndexResponse response = client.indices().delete(request);
3. 添加文档
IndexRequest request = new IndexRequest("my_index", "my_type", "my_id").source(jsonSource);
IndexResponse response = client.index(request);
4. 删除文档
DeleteRequest request = new DeleteRequest("my_index", "my_type", "my_id");
DeleteResponse response = client.delete(request);
5. 查询文档
SearchRequest request = new SearchRequest("my_index");
SearchResponse response = client.search(request);
6. 查询所有文档
SearchRequest request = new SearchRequest("my_index");
request.source().size(10000);
SearchResponse response = client.search(request);
7. 查询指定字段的文档
SearchRequest request = new SearchRequest("my_index");
request.source().fetchSource(new String[]{"name", "age"}, null);
SearchResponse response = client.search(request);
8. 查询匹配指定值的文档
SearchRequest request = new SearchRequest("my_index");
TermQueryBuilder queryBuilder = new TermQueryBuilder("name", "张三");
request.source().query(queryBuilder);
SearchResponse response = client.search(request);
9. 查询匹配指定范围值的文档
SearchRequest request = new SearchRequest("my_index");
RangeQueryBuilder queryBuilder = new RangeQueryBuilder("age").from(18).to(30);
request.source().query(queryBuilder);
SearchResponse response = client.search(request);
10. 查询匹配多个值的文档
SearchRequest request = new SearchRequest("my_index");
MultiMatchQueryBuilder queryBuilder = new MultiMatchQueryBuilder("张三", "name", "age");
request.source().query(queryBuilder);
SearchResponse response = client.search(request);
11. 查询匹配正则表达式的文档
SearchRequest request = new SearchRequest("my_index");
RegexpQueryBuilder queryBuilder = new RegexpQueryBuilder("name", "张.*");
request.source().query(queryBuilder);
SearchResponse response = client.search(request);
12. 查询匹配模糊值的文档
SearchRequest request = new SearchRequest("my_index");
FuzzyQueryBuilder queryBuilder = new FuzzyQueryBuilder("name", "张三");
request.source().query(queryBuilder);
SearchResponse response = client.search(request);
13. 查询匹配通配符的文档
SearchRequest request = new SearchRequest("my_index");
WildcardQueryBuilder queryBuilder = new WildcardQueryBuilder("name", "张*");
request.source().query(queryBuilder);
SearchResponse response = client.search(request);
14. 查询匹配组合条件的文档
SearchRequest request = new SearchRequest("my_index");
BoolQueryBuilder queryBuilder = new BoolQueryBuilder();
queryBuilder.must(new TermQueryBuilder("name", "张三"));
queryBuilder.must(new RangeQueryBuilder("age").from(18).to(30));
request.source().query(queryBuilder);
SearchResponse response = client.search(request);
15. 查询匹配排序条件的文档
SearchRequest request = new SearchRequest("my_index");
SortQueryBuilder sortQueryBuilder = new SortQueryBuilder().add(SortBuilders.fieldSort("age").order(SortOrder.DESC));
request.source().sort(sortQueryBuilder);
SearchResponse response = client.search(request);
16. 查询匹配分页条件的文档
SearchRequest request = new SearchRequest("my_index");
request.source().from(0).size(10);
SearchResponse response = client.search(request);
17. 查询匹配高亮显示的文档
SearchRequest request = new SearchRequest("my_index");
HighlightBuilder highlightBuilder = new HighlightBuilder();
highlightBuilder.field("name");
request.source().highlighter(highlightBuilder);
SearchResponse response = client.search(request);
18. 查询匹配聚合条件的文档
SearchRequest request = new SearchRequest("my_index");
AggregationBuilder aggregationBuilder = AggregationBuilders.terms("age_group").field("age");
request.source().aggregation(aggregationBuilder);
SearchResponse response = client.search(request);
19. 查询匹配脚本条件的文档
SearchRequest request = new SearchRequest("my_index");
ScriptQueryBuilder scriptQueryBuilder = new ScriptQueryBuilder(new Script("doc['age'].value > 18"));
request.source().query(scriptQueryBuilder);
SearchResponse response = client.search(request);
20. 查询匹配过滤器条件的文档
SearchRequest request = new SearchRequest("my_index");
FilterBuilder filterBuilder = new TermFilterBuilder("name", "张三");
request.source().filter(filterBuilder);
SearchResponse response = client.search(request);
21. 查询匹配排序条件的文档
SearchRequest request = new SearchRequest("my_index");
SortQueryBuilder sortQueryBuilder = new SortQueryBuilder().add(SortBuilders.fieldSort("age").order(SortOrder.DESC));
request.source().sort(sortQueryBuilder);
SearchResponse response = client.search(request);