使用elasticsearch总结

es 多条件查询 or或 查询

es 查询满足条件1 或满足条件2 的结果合集

//主查询
matchQuery.must(
QueryBuilders.boolQuery()
.should(QueryBuilders.matchQuery("xm","好的"))//分词后匹配
.should(QueryBuilders.matchParaseQuery("addr","钱江路"))//匹配完整词
.should(QueryBuilders.termQuery("status",0))//完全匹配
.should(QueryBuilders.termsQuery("keyword",string[]))//多关键字匹配
);

SearchResponse response = client.prepareSearch("indexName")
.setFrom(0)
.setSize(10)
.setQuery(matchQuery)
.get();

SearchHits hits = response.getHits();
int count = (int) hits.getTotalHits();
for(SearchHit one:hits)
{
//遍历结果处理
}

es查询

@Resource
@Qualifier("restHighLevelClient")
private RestHighLevelClient client;

SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
boolQueryBuilder.设置条件;
//boolQueryBuilder.should(QueryBuilders.matchQuery("retentionPeriod", "9002"));
searchSourceBuilder.query(boolQueryBuilder);


SearchRequest request = new SearchRequest(index);
request.source(builder);
// 发起搜索请求
SearchResponse response = client.search(request, RequestOptions.DEFAULT);

请求构造器

IndexRequest;
SearchRequest;
UpdateRequest;
DeleteRequest;

根据集合查询

List<String> idList = Arrays.asList(entityBorrow.getFileId().split(","));
boolQueryBuilder.must(QueryBuilders.termsQuery("id", idList));

es在postman中的操作

1.查看所有索引 http://127.0.0.1:9200/_cat/indices?v

bool查询使用 BoolQueryBuilder (must )

范围查询 RangeQueryBuilder

一个完整的查询案例

@Resource
private RestHighLevelClient client;

@GetMapping(value = "test")
public ApiResult test(){
    SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
    BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
    boolQueryBuilder.should(QueryBuilders.matchQuery("retentionPeriod", "9002"));
    SearchSourceBuilder builder = searchSourceBuilder.query(boolQueryBuilder);

    SearchRequest request = new SearchRequest("1");
    request.source(builder);
    // 发起搜索请求
    try {
        SearchResponse response = client.search(request, RequestOptions.DEFAULT);
        System.out.println(response);
        System.out.println("-----------");
        SearchHit[] hits = response.getHits().getHits();
        List<SearchHit> list= new ArrayList<>();
        for (SearchHit hit : hits) {
            list.add(hit);
        }
        return  ApiResult.getSuccessBuilder().data(list).build();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return null;
}


//简化过后
@GetMapping(value = "test")
    public ApiResult test(){
        SearchSourceBuilder builder = new SearchSourceBuilder();
        TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("retentionPeriod", "9002");
        builder.query(termQueryBuilder);
        SearchRequest request = new SearchRequest("1");
        request.source(builder);
        // 发起搜索请求
        try {
            SearchResponse response = client.search(request, RequestOptions.DEFAULT);
            System.out.println(response);
            System.out.println("-----------");
            SearchHit[] hits = response.getHits().getHits();
            List<SearchHit> list= new ArrayList<>();
            for (SearchHit hit : hits) {
                list.add(hit);
            }
            return  ApiResult.getSuccessBuilder().data(list).build();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

其他未列出查询参考文档 ctrl +F 搜索用法

关于客户端的总结

TransportClient //7.0 以下  8.0被弃用
RestHighLevelClient //推荐使用 
ElasticsearchRestTemplate    
//ElasticsearchRestTemplate 基 于 RestHighLevelClient 客户端的。需要自定义配置类,继承AbstractElasticsearchConfiguration,并实现 elasticsearchClient()抽象方法,创建 RestHighLevelClient 对象。

ElasticsearchRestTemplate 是 spring-data-elasticsearch 项目中的一个类,和其他 spring 项目中的 template

类似。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值