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

<properties>
    <elasticsearch.version>7.13.0</elasticsearch.version>
</properties>
<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-high-level-client</artifactId>
    <version>${elasticsearch.version}</version>
    <exclusions>
        <exclusion>
            <groupId>org.elasticsearch</groupId>
            <artifactId>elasticsearch</artifactId>
        </exclusion>
        <exclusion>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-client</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.elasticsearch</groupId>
    <artifactId>elasticsearch</artifactId>
    <version>${elasticsearch.version}</version>
</dependency>
<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-client</artifactId>
    <version>${elasticsearch.version}</version>
    <exclusions>
        <exclusion>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<!--springboot-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- fast json-->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
</dependency>
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;

/**
 * @author likk
 * @create 2021-11-22 18:31
 */
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

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐