簡(jiǎn)介
在項(xiàng)目開(kāi)發(fā)過(guò)程中需要從Elasticsearch中查詢(xún)?nèi)罩緮?shù)據(jù),下面介紹從Elasticsearch中查詢(xún)索引全部數(shù)據(jù),以及按照時(shí)間區(qū)間查詢(xún)索引數(shù)據(jù)。
引入依賴(lài)
<!-- Elasticsearch客戶(hù)端 -->
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.9.1</version>
</dependency>
<!-- Elasticsearch版本 -->
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>7.9.1</version>
</dependency>
創(chuàng)建配置類(lèi)
import org.apache.http.HttpHost;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestClientBuilder;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class ElasticsearchConfig {
public static final RequestOptions COMMON_OPTIONS;
static {
RequestOptions.Builder builder = RequestOptions.DEFAULT.toBuilder();
COMMON_OPTIONS = builder.build();
}
@Bean
public RestHighLevelClient esRestClient() {
RestClientBuilder builder = null;
builder = RestClient.builder(new HttpHost("ip address", 9200, "http"));
RestHighLevelClient client = new RestHighLevelClient(builder);
return client;
}
}
查詢(xún)索引下的全部數(shù)據(jù)文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-513392.html
public static void matchAllQuery() throws Exception {
ElasticsearchConfig elasticSearchConfig = new ElasticsearchConfig();
RestHighLevelClient client = elasticSearchConfig.esRestClient();
// 搜索請(qǐng)求對(duì)象
SearchRequest searchRequest = new SearchRequest("shenyu-access-logging");
// 指定類(lèi)型
searchRequest.types("_doc");
// 搜索源構(gòu)建對(duì)象
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
// 搜索方式
// matchAllQuery搜索全部,設(shè)置查詢(xún)數(shù)據(jù)條數(shù)為20。
searchSourceBuilder.query(QueryBuilders.matchAllQuery());
searchSourceBuilder.size(20);
// 設(shè)置源字段過(guò)慮,第一個(gè)參數(shù)結(jié)果集包括哪些字段,第二個(gè)參數(shù)表示結(jié)果集不包括哪些字段
searchSourceBuilder.fetchSource(new String[] {"requestUri", "requestHeader", "requestBody", "responseHeader", "responseBody"}, new String[]{});
// 向搜索請(qǐng)求對(duì)象中設(shè)置搜索源
searchRequest.source(searchSourceBuilder);
// 執(zhí)行搜索,向ES發(fā)起http請(qǐng)求
SearchResponse searchResponse = client.search(searchRequest, ElasticsearchConfig.COMMON_OPTIONS);
// 搜索結(jié)果
SearchHits hits = searchResponse.getHits();
// 匹配到的總記錄數(shù)
TotalHits totalHits = hits.getTotalHits();
// 得到匹配度高的文檔
SearchHit[] searchHits = hits.getHits();
for (SearchHit hit: searchHits) {
// 文檔的主鍵
String id = hit.getId();
// 源文檔內(nèi)容
Map<String, Object> sourceAsMap = hit.getSourceAsMap();
System.out.println(sourceAsMap);
}
}
按照時(shí)間區(qū)間查詢(xún)索引數(shù)據(jù)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-513392.html
public static void matchTimeRangeQuery() throws Exception {
ElasticsearchConfig elasticSearchConfig = new ElasticsearchConfig();
RestHighLevelClient client = elasticSearchConfig.esRestClient();
// 搜索請(qǐng)求對(duì)象
SearchRequest searchRequest = new SearchRequest("shenyu-access-logging");
// 指定類(lèi)型
searchRequest.types("_doc");
// 搜索源構(gòu)建對(duì)象
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
// 搜索方式
// 按時(shí)間區(qū)間查詢(xún),設(shè)置查詢(xún)數(shù)據(jù)條數(shù)為20。
searchSourceBuilder.query(QueryBuilders.rangeQuery("timeLocal.keyword").from("2022-11-02 15:21:22.794").to("2022-11-02 16:22:33.794"));
searchSourceBuilder.size(20);
// 設(shè)置源字段過(guò)慮,第一個(gè)參數(shù)結(jié)果集包括哪些字段,第二個(gè)參數(shù)表示結(jié)果集不包括哪些字段
searchSourceBuilder.fetchSource(new String[] {"timeLocal", "requestUri", "requestHeader", "requestBody", "responseHeader", "responseBody"}, new String[]{});
// 向搜索請(qǐng)求對(duì)象中設(shè)置搜索源
searchRequest.source(searchSourceBuilder);
// 執(zhí)行搜索,向ES發(fā)起http請(qǐng)求
SearchResponse searchResponse = client.search(searchRequest, ElasticsearchConfig.COMMON_OPTIONS);
// 搜索結(jié)果
SearchHits hits = searchResponse.getHits();
// 匹配到的總記錄數(shù)
TotalHits totalHits = hits.getTotalHits();
// 得到匹配度高的文檔
SearchHit[] searchHits = hits.getHits();
for (SearchHit hit: searchHits) {
// 文檔的主鍵
String id = hit.getId();
// 源文檔內(nèi)容
Map<String, Object> sourceAsMap = hit.getSourceAsMap();
System.out.println(sourceAsMap);
}
}
到了這里,關(guān)于Elasticsearch 查詢(xún)?nèi)繑?shù)據(jù),按照時(shí)間區(qū)間查詢(xún)數(shù)據(jù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!