栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java代码实现一个简单ES条件查询

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java代码实现一个简单ES条件查询

1.导入es依赖 我使用的es是7.13.0的版本


    7.13.0


    org.elasticsearch.client
    elasticsearch-rest-high-level-client
    ${elasticsearch.version}
    
        
            org.elasticsearch
            elasticsearch
        
        
            org.elasticsearch.client
            elasticsearch-rest-client
        
    


    org.elasticsearch
    elasticsearch
    ${elasticsearch.version}


    org.elasticsearch.client
    elasticsearch-rest-client
    ${elasticsearch.version}
    
        
            commons-logging
            commons-logging
        
    



    org.springframework.boot
    spring-boot-starter-web



    com.alibaba
    fastjson
2.直接上代码

import com.alibaba.fastjson.JSONObject;
import org.apache.http.HttpHost;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestClientBuilder;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.builder.SearchSourceBuilder;


public class SearchTest {
    public static void main(String[] args) {
        try {
            //通过ES提供的 构造器 来建立起和ES之间的远程连接
            RestClientBuilder restClientBuilder =RestClient.builder(new HttpHost("192.168.22.130",19200,"http"));
            //创建高层对象准备操作ES创建的连接
            RestHighLevelClient restHighLevelClient = new RestHighLevelClient(restClientBuilder);
            //搜索资源构造器
            SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
            //创建复合查询条件对象
            BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
            //如以下条件:查询名字中有李四的并且年龄必须大于20的
            BoolQueryBuilder must = boolQueryBuilder.should(QueryBuilders.matchQuery("name", "张三")).must(QueryBuilders.matchQuery("age", 18));
            //需要条件
            SearchSourceBuilder query = searchSourceBuilder.query(must);
            //创建一个SearchRequest,查询的请求对象
            SearchRequest request = new SearchRequest("aa").source(query);
            //得到了一个搜索响应对象
            SearchResponse search = restHighLevelClient.search(request, RequestOptions.DEFAULT);
            SearchHit[] hits = search.getHits().getHits();
            for (SearchHit hit : hits) {
                String str = hit.toString();

                  //转换成JSON格式
                JSonObject jsonObject = JSONObject.parseObject(str);
                JSonObject source = jsonObject.getJSonObject("_source");
                String name = source.getString("name");
                Integer age = source.getInteger("age");
                System.out.println("name:"+name+","+"age:"+age);

            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}
3.输出结果
name:张三,age:18
name:张三,age:18

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/581895.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号