java操作ES的简单查询和bool查询
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java操作ES的简单查询和bool查询,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4426字,纯文字阅读大概需要7分钟。
内容图文
![java操作ES的简单查询和bool查询](/upload/InfoBanner/zyjiaocheng/626/a7932288f3c34b17a4b47730c577ec27.jpg)
导入包
![java操作ES的简单查询和bool查询 - 文章图片](/upload/getfiles/0001/2021/5/1/20210501045905696.jpg)
![java操作ES的简单查询和bool查询 - 文章图片](/upload/getfiles/0001/2021/5/1/20210501045905753.jpg)
<dependencies> <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>transport</artifactId> <version>5.2.2</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.7</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.7</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>RELEASE</version> </dependency> </dependencies>View Code
2.Java操作
基本操作通过client客户端对象获得客户端然后通过preparIndex等方法传入index,type,id参数和Kibaan中的操作一样
![java操作ES的简单查询和bool查询 - 文章图片](/upload/getfiles/0001/2021/5/1/20210501045905696.jpg)
![java操作ES的简单查询和bool查询 - 文章图片](/upload/getfiles/0001/2021/5/1/20210501045905753.jpg)
public class EsTest { //创建客户端 public TransportClient createClient() throws UnknownHostException { return new PreBuiltTransportClient(Settings.EMPTY) .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9300)); } //添加方法 @Test public void testAddDoc() throws Exception{ TransportClient client = createClient(); //添加index,type,id IndexRequestBuilder indexRequestBuilder = client.prepareIndex("jiedada", "shuai", "1"); //准备数据 Map map = new HashMap(); map.put("id",1); map.put("name","jiedada"); map.put("age",20); map.put("sex",1); //传入数据并且提交数据 IndexResponse indexResponse = indexRequestBuilder.setSource(map).get(); System.out.println(indexResponse.getResult()); //关闭客户端 client.close(); } //修改方法 @Test public void testUpdateDoc() throws Exception{ TransportClient client = createClient(); //添加index,type,id UpdateRequestBuilder updateRequestBuilder = client.prepareUpdate("jiedada", "shuai", "1"); //准备数据 Map map = new HashMap(); map.put("id",1); map.put("name","jieshuai"); map.put("sex",1); //传入数据并且提交数据 UpdateResponse updateResponse = updateRequestBuilder.setDoc(map).get(); System.out.println(updateResponse.getResult()); //关闭客户端 client.close(); } //查询方法 @Test public void testFindDoc() throws Exception{ TransportClient client = createClient(); GetRequestBuilder getRequestBuilder = client.prepareGet("jiedada", "shuai", "1"); GetResponse getFields = getRequestBuilder.get(); System.out.println(getFields.getSource()); client.close(); } //删除方法方法 @Test public void testDelDoc() throws Exception{ TransportClient client = createClient(); client.prepareDelete("jiedada", "shuai", "1").get(); client.close(); } //批量操作 @Test public void testBulkDoc() throws Exception{ TransportClient client = createClient(); BulkRequestBuilder bulkRequestBuilder = client.prepareBulk(); //获得添加对象 IndexRequestBuilder indexRequestBuilder = client.prepareIndex("jiedada", "shuai", "1"); //准备数据 Map map = new HashMap(); map.put("id",1); map.put("name","jiedada"); map.put("sex",1); indexRequestBuilder.setSource(map); //传入数据并且提交数据 //获得更新对象 UpdateRequestBuilder updateRequestBuilder = client.prepareUpdate("jiedada", "shuai", "1"); //准备数据 Map map1 = new HashMap(); map1.put("id",1); map1.put("name","jieshuai"); map1.put("sex",1); //传入数据并且提交数据 updateRequestBuilder.setDoc(map1); BulkResponse bulkItemResponses = bulkRequestBuilder.add(indexRequestBuilder).add(updateRequestBuilder).get(); //获得多个对象 BulkItemResponse[] items = bulkItemResponses.getItems(); for (BulkItemResponse item : items) { //判断是否保存成功,如果不成功 System.out.println(item.getFailure()); } client.close(); } //bool查询和过滤 @Test public void testBoolDoc() throws Exception{ TransportClient client = createClient(); //获得search对象 SearchRequestBuilder search = client.prepareSearch("jiedada"); /** * { "query": { "bool": { //booleanQuery 组合查询 "must": [ //查询 与(must) 或(should) 非(must not) { "match": {//标准查询(分词匹配) term:单词查询(部分词) "description": "hello java" } } ], "filter": { //过滤 "term": {"description": "hello world"} } } }, "from": 20, "size": 10, "_source": ["fullName", "age", "email"], "sort": [{"join_date": "desc"},{"age": "asc"}] } */ //通过工具类获得must BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery(); List<QueryBuilder> must = queryBuilder.must(); //匹配条件 must.add(QueryBuilders.matchQuery("name","jiedada")); //过滤条件 queryBuilder.filter(QueryBuilders.rangeQuery("age").gt(18).lt(25)); search.setQuery(queryBuilder); //设置排序 search.addSort("age", SortOrder.DESC); //分页 search.setFrom(0); search.setSize(5); //提交 SearchResponse searchResponse = search.get(); //命中的内容和 SearchHits hits = searchResponse.getHits(); System.out.println("命中条数+"+hits.getTotalHits()); for (SearchHit hit : hits) { System.out.println(hit.getSource()); } } }View Code
内容总结
以上是互联网集市为您收集整理的java操作ES的简单查询和bool查询全部内容,希望文章能够帮你解决java操作ES的简单查询和bool查询所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。