返回

Elasticsearch业务常用21种语句操作附带Java API代码

后端

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);