2、application.yml 配置org.elasticsearch.client elasticsearch-rest-high-level-client6.8.15 org.elasticsearch elasticsearch6.8.15 org.apache.commons commons-pool22.9.0
3、获取配置文件的config的信息#查询配置 snat-es-config: indexes: sq_* esIp: 127.0.0.1 esPort: 9200 username: admin password: admin
4、构建Clientimport lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; /** * @Description: 查询配置文件 * @Author: liujian * @Version: 1.0 * @Create Date Time: 2021-12-03 17:32 * @Update Date Time: 2021-12-03 17:32 * @see */ @Configuration @Data @ConfigurationProperties(prefix = "snat-es-config") public class SnatConfig { /** * es库索引前缀 */ private String indexes; /** * esIP */ private String esIp; /** * esPort */ private int esPort; /** * userName */ private String userName; /** * password */ private String passWord; }
5、实现查询业务/** * 构建Client * * @return RestHighLevelClient client */ public RestHighLevelClient getClient() { RestHighLevelClient client = null; String userName = snatConfig.getUserName(); String userPwd = snatConfig.getPassWord(); String ip = snatConfig.getEsIp(); int port = snatConfig.getEsPort(); try { /** 用户认证对象 */ final CredentialsProvider credentialsProvider = new BasicCredentialsProvider(); /** 设置账号密码 */ credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(userName, userPwd)); /** 创建rest client对象 */ RestClientBuilder builder = RestClient.builder(new HttpHost(ip, port)) .setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() { @Override public HttpAsyncClientBuilder customizeHttpClient( HttpAsyncClientBuilder httpClientBuilder) { return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider); } }); client = new RestHighLevelClient(builder); } catch (Exception e) { e.printStackTrace(); } return client; }
6、可能出现的异常@Test public void getSnatDataTest01() throws IOException { RestHighLevelClient client = getClient(); // 根据索引创建查询请求 SearchRequest searchRequest = new SearchRequest("sq_*"); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); // 构建查询语句 可以写多个参数 searchSourceBuilder.query(QueryBuilders.queryStringQuery("127.0.0.1")) .sort("timestamp", SortOrder.fromString("desc")); System.out.println("searchSourceBuilder =" + searchSourceBuilder); searchRequest.source(searchSourceBuilder); SearchResponse response = client.search(searchRequest, RequestOptions.DEFAULT); SearchHits hits = response.getHits(); //将数据打印出来 System.out.println(JSONObject.toJSON(hits)); }
方式二:java.lang.NoSuchFieldError: IGNORE_DEPRECATIONS 说明你的pom依赖是 7版本的(依赖版本不对)
前提:代码中存在通过HTTP请求的工具,可以直接通过API调用es库来获取数据
@Test public void getSnatDataTest02() throws IOException { String sandforadBody = "{\n" + " \"from\": 0,\n" + " \"size\": 150,\n" + " \"query\": {\n" + " \"bool\": {\n" + " \"must\": [\n" + " {\n" + " \"query_string\": {\n" + " \"query\": \"10.42.141.32\",\n" + " \"fields\": [],\n" + " \"use_dis_max\": true,\n" + " \"tie_breaker\": 0,\n" + " \"default_operator\": \"or\",\n" + " \"auto_generate_phrase_queries\": false,\n" + " \"max_determinized_states\": 10000,\n" + " \"allow_leading_wildcard\": true,\n" + " \"enable_position_increments\": true,\n" + " \"fuzziness\": \"AUTO\",\n" + " \"fuzzy_prefix_length\": 0,\n" + " \"fuzzy_max_expansions\": 50,\n" + " \"phrase_slop\": 0,\n" + " \"escape\": false,\n" + " \"split_on_whitespace\": true,\n" + " \"boost\": 1\n" + " }\n" + " }\n" + " ],\n" + " \"filter\": [\n" + " {\n" + " \"bool\": {\n" + " \"must\": [\n" + " {\n" + " \"range\": {\n" + " \"timestamp\": {\n" + " \"from\": \"1970-01-01 00:00:00.000\",\n" + " \"to\": \"2022-04-27 08:36:36.120\",\n" + " \"include_lower\": true,\n" + " \"include_upper\": true,\n" + " \"boost\": 1\n" + " }\n" + " }\n" + " }\n" + " ],\n" + " \"should\": [\n" + " {\n" + " \"query_string\": {\n" + " \"query\": \"streams:5e8456c8df8b291d662c4638\",\n" + " \"fields\": [],\n" + " \"use_dis_max\": true,\n" + " \"tie_breaker\": 0,\n" + " \"default_operator\": \"or\",\n" + " \"auto_generate_phrase_queries\": false,\n" + " \"max_determinized_states\": 10000,\n" + " \"enable_position_increments\": true,\n" + " \"fuzziness\": \"AUTO\",\n" + " \"fuzzy_prefix_length\": 0,\n" + " \"fuzzy_max_expansions\": 50,\n" + " \"phrase_slop\": 0,\n" + " \"escape\": false,\n" + " \"split_on_whitespace\": true,\n" + " \"boost\": 1\n" + " }\n" + " }\n" + " ],\n" + " \"disable_coord\": false,\n" + " \"adjust_pure_negative\": true,\n" + " \"boost\": 1\n" + " }\n" + " }\n" + " ],\n" + " \"disable_coord\": false,\n" + " \"adjust_pure_negative\": true,\n" + " \"boost\": 1\n" + " }\n" + " },\n" + " \"sort\": [\n" + " {\n" + " \"timestamp\": {\n" + " \"order\": \"desc\"\n" + " }\n" + " }\n" + " ],\n" + " \"highlight\": {\n" + " \"fragment_size\": 0,\n" + " \"number_of_fragments\": 0,\n" + " \"require_field_match\": false,\n" + " \"fields\": {\n" + " \"*\": {}\n" + " }\n" + " }\n" + "}"; String url = "http://192.168.113.99:9200/sq_*/_search"; //初始化 HttpRequest sandforadHttpRequest = HttpRequestImpl.getInstance(); HttpRequestBodyBuilder bodyBuilder = HttpRequestBodyBuilderImpl.getInstance(); final RequestBody requestBody = bodyBuilder.json(sandforadBody); Response post = sandforadHttpRequest.post(url, requestBody); String stringPost = post.body().string(); System.out.println(stringPost); }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)