java代码实现一个简单ES条件查询
1.导入es依赖 我使用的es是7.13.0的版本<properties><elasticsearch.version>7.13.0</elasticsearch.version></properties><dependency><groupId>org.elasticsearch.client</groupId>
·
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
更多推荐
已为社区贡献1条内容
所有评论(0)