欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

ElasticsearchJavaRESTClient查询

时间:2023-06-07

上一篇:Elasticsearch Java REST Client 初始化、添加索引及数据

简单查询

# 简单通过id获取数据@GetMapping("get")public GetResponse get(String id) { GetResponse response = null; try { GetRequest getRequest = new GetRequest("edu-app-user", "doc", id); response = restHighLevelClient.get(getRequest, RequestOptions.DEFAULT); } catch (IOException e) { e.printStackTrace(); } return response; }

# GetRequest 可选方法# 禁用源检索,禁用抓取_source,默认启用。获取取所有字段数据,如果禁用请设置要获取的字段数据,不指定结果sorce值为nullrequest.fetchSourceContext(FetchSourceContext.DO_NOT_FETCH_SOURCE);@GetMapping("get")public GetResponse get(String id) { GetResponse response = null; try { GetRequest request = new GetRequest("edu-app-user", "doc", id); request.fetchSourceContext(FetchSourceContext.DO_NOT_FETCH_SOURCE); response = restHighLevelClient.get(request, RequestOptions.DEFAULT); } catch (IOException e) { e.printStackTrace(); } return response;}

# 指定返回结果@GetMapping("get2")public GetResponse get2(String id) { GetResponse response = null; try { GetRequest request = new GetRequest("edu-app-user", "doc", id); // 结果中展示的字段 String[] includes = new String[]{"name", "age"}; // 要排除的字段,如果没有,设置为空数组 String[] excludes = Strings.EMPTY_ARRAY; FetchSourceContext fetchSourceContext = new FetchSourceContext(FetchSourceContext.FETCH_SOURCE.fetchSource(), includes, excludes); request.fetchSourceContext(fetchSourceContext); response = restHighLevelClient.get(request, RequestOptions.DEFAULT); } catch (IOException e) { e.printStackTrace(); } return response;}

# 指定排除结果@GetMapping("get3")public GetResponse get3(String id) { GetResponse response = null; try { GetRequest request = new GetRequest("edu-app-user", "doc", id); // 结果中展示的字段,空则全部展示 String[] includes = Strings.EMPTY_ARRAY; // 要排除的字段 String[] excludes = new String[]{ "age"}; FetchSourceContext fetchSourceContext = new FetchSourceContext(FetchSourceContext.FETCH_SOURCE.fetchSource(), includes, excludes); request.fetchSourceContext(fetchSourceContext); response = restHighLevelClient.get(request, RequestOptions.DEFAULT); } catch (IOException e) { e.printStackTrace(); } return response; }

# 异步获取数据@GetMapping("get4")public void get4(String id) { try { GetRequest request = new GetRequest("edu-app-user", "doc", id); restHighLevelClient.getAsync(request, RequestOptions.DEFAULT,new EduAppUserGetListener()); } catch (Exception e) { e.printStackTrace(); }}

# 监听类与异步添加数据结果一致,仅更换泛型即可package com.wdz.es.config.es;import org.elasticsearch.action.ActionListener;import org.elasticsearch.action.get.GetResponse;import org.elasticsearch.action.index.IndexResponse;public class EduAppUserGetListener implements ActionListener { @Override public void onResponse(GetResponse response) { System.out.println("异步获取成功:"+ response); } @Override public void onFailure(Exception e) { System.out.println("异步获取失败:"+ e.getMessage()); }}

# 判断指定数据是否存在# 结果是Boolean,为了提高效率可禁用抓取_source和禁用获取存储字段@GetMapping("get5")public boolean get5(String id) { try { GetRequest request = new GetRequest("edu-app-user", "doc", id); // 禁用源查询,默认启用,禁用后source为null // 禁用抓取_source request.fetchSourceContext(new FetchSourceContext(false)); // 禁用获取存储的字段 request.storedFields("_none_"); return restHighLevelClient.exists(request, RequestOptions.DEFAULT); } catch (IOException e) { e.printStackTrace(); } return false; }

# 异步存在查询@GetMapping("get6")public void get6(String id) { GetRequest request = new GetRequest("edu-app-user", "doc", id); // 禁用源查询,默认启用,禁用后source为null // 禁用抓取_source request.fetchSourceContext(new FetchSourceContext(false)); // 禁用获取存储的字段 request.storedFields("_none_"); restHighLevelClient.existsAsync(request, RequestOptions.DEFAULT, new ExistsAsyncListen());}

# 监听类,与查询数据和添加监听一致,更换泛型即可package com.wdz.es.config.es;import org.elasticsearch.action.ActionListener;public class ExistsAsyncListen implements ActionListener { @Override public void onResponse(Boolean aBoolean) { System.out.println("是否存在:"+aBoolean); } @Override public void onFailure(Exception e) { System.out.println("查询异常:"+e.getMessage()); }}

上一篇:Elasticsearch Java REST Client 初始化、添加索引及数据

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。