使用java 查询elasticsearch 数据发现size有缓存问题
public List<OASearch> dealQueryWithPage(ElasticsearchClient client, String indexName, Query query, int from, int size, List<SortOptions> sorts, Class<OASearch> reclass) throws IOException {
int start = from != 0 ? (from-1)*size: 0;
SearchResponse<OASearch> searchResponse =client.search(
s -> s.index(indexName).query(query).sort(sorts).from(start).size(size),reclass);
return getResponseSource(searchResponse);
}
public List<OASearch> dealQuery(ElasticsearchClient client,String indexName, Query query,List<SortOptions> sorts, Class<OASearch> reclass) throws IOException {
//此处不加size参数会使用前面查询的size,不知是否是客户端设置的原因 故加上导出数据条数上限
SearchResponse<OASearch> searchResponse =client.search(
s -> s.index(indexName).query(query).sort(sorts).size(exportMaxSize),reclass);
return getResponseSource(searchResponse);
}
一个查询条件 架设满足条件的数据共有15条 分页查询容量10条 但是经过第一次分页查询的方法后使用非分页查询的方法 结果任然只有10条,加入超过15的size后任然可以查到15条数据。
public ElasticsearchClient elasticsearchClient(){
ElasticsearchClient client = null;
if (enable){
final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
//设置账号密码
credentialsProvider.setCredentials(
AuthScope.ANY, new UsernamePasswordCredentials(userName, passWord));
// RestClients restClients =
// RestClient restClient = RestClient.builder(new HttpHost(host, port))
// .setHttpClientConfigCallback(httpClientBuilder->httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider)).build();
//
// ElasticsearchTransport transport = new RestClientTransport(restClient,new JacksonJsonpMapper());
// And create the API client
Path caCertificatePath = Paths.get(capath);
System.out.println("capath:"+capath);
SSLContext sslContext = null;
try {
CertificateFactory factory = CertificateFactory.getInstance("X.509");
Certificate trustedCa;
try (InputStream is = Files.newInputStream(caCertificatePath)) {
trustedCa = factory.generateCertificate(is);
}
KeyStore trustStore = KeyStore.getInstance("pkcs12");
trustStore.load(null, null);
trustStore.setCertificateEntry("ca", trustedCa);
SSLContextBuilder sslContextBuilder = SSLContexts.custom()
.loadTrustMaterial(trustStore, null);
sslContext = sslContextBuilder.build();
SSLContext finalSslContext = sslContext;
RestClientBuilder builder = RestClient.builder(
new HttpHost(host, port, "https"))
.setHttpClientConfigCallback(httpClientBuilder -> httpClientBuilder
.setSSLContext(finalSslContext)
.setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE)
.setDefaultCredentialsProvider(credentialsProvider));
ElasticsearchTransport transport = new RestClientTransport(builder.build(),new JacksonJsonpMapper());
client = new ElasticsearchClient(transport);
} catch (CertificateException | IOException | KeyStoreException | NoSuchAlgorithmException | KeyManagementException e) {
//log.error("ES连接认证失败", e);
System.out.println("ES连接认证失败:"+e.getMessage());
}
}
return client;
}
但是在kibana中同样的查询语句结果是15条 不知道这个是我客户端设置有问题还是 size参数有缓存数据
es 版本 8.6.1