elaseticSearch搜索每次搜索的结果会变动的问题修改

每次通过es搜索相同的查询语句,但是搜索出来的结果排序会变动

原因是,查询语句没有设置 type.

java客户端改动如下:

将 searchRequestBuilder = client.prepareSearch(INDEX).setQuery(getQuery(page))
 .setPostFilter(buildFilter(page))

        .setFrom(page.getFirst() - 1).setSize(page.getPageSize());

改成:

 searchRequestBuilder = client.prepareSearch(INDEX).setTypes(TYPE).setQuery(getQuery(page))
 .setPostFilter(buildFilter(page))

 .setFrom(page.getFirst() - 1).setSize(page.getPageSize());

问题完美解决


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要整合 Elasticsearch 8.4 的 Java Client 端,需要使用 Elasticsearch 官方提供的 Java High Level REST Client。下面是整合步骤: 1. 在 pom.xml 中添加 Elasticsearch Java High Level REST Client 的依赖: ```xml <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> <version>8.4.0</version> </dependency> ``` 2. 在 application.yml 中配置 Elasticsearch 的连接信息和 CA 认证信息: ```yaml spring: data: elasticsearch: cluster-name: elasticsearch cluster-nodes: node1:9200,node2:9200 properties: es.net.ssl.truststore.location: /path/to/truststore.jks es.net.ssl.truststore.password: password ``` 其中,`cluster-nodes` 是 Elasticsearch 集群节点列表,`es.net.ssl.truststore.location` 是 CA 证书的路径,`es.net.ssl.truststore.password` 是 CA 证书的密码。 3. 创建 Elasticsearch 的配置类,用于配置 Elasticsearch 的连接信息: ```java @Configuration @EnableElasticsearchRepositories(basePackages = "com.example.repository") public class ElasticsearchConfig extends AbstractElasticsearchConfiguration { @Value("${spring.data.elasticsearch.cluster-name}") private String clusterName; @Value("${spring.data.elasticsearch.cluster-nodes}") private String clusterNodes; @Override public RestHighLevelClient elasticsearchClient() { final ClientConfiguration clientConfiguration = ClientConfiguration.builder() .connectedTo(clusterNodes) .usingSsl(getSSLContext()) .build(); return RestClients.create(clientConfiguration).rest(); } private SSLContext getSSLContext() { try { KeyStore truststore = KeyStore.getInstance("jks"); truststore.load(new FileInputStream(new File("/path/to/truststore.jks")), "password".toCharArray()); TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); trustManagerFactory.init(truststore); SSLContextBuilder builder = SSLContexts.custom().loadTrustMaterial(truststore, null); SSLContext sslContext = builder.build(); return sslContext; } catch (Exception e) { throw new RuntimeException(e); } } } ``` 其中,`elasticsearchClient` 方法用于创建 Elasticsearch 的客户端,`getSSLContext` 方法用于加载 CA 证书。 4. 在使用 Elasticsearch 的 Repository 时,注入 ElasticsearchTemplate 对象,并在构造函数中传入 Elasticsearch 的配置信息: ```java @Repository public class MyElasticsearchRepositoryImpl implements MyElasticsearchRepository { private final ElasticsearchTemplate elasticsearchTemplate; public MyElasticsearchRepositoryImpl(ElasticsearchTemplate elasticsearchTemplate) { this.elasticsearchTemplate = elasticsearchTemplate; } // ... } ``` 这样就完成了 Elasticsearch 8.4 Java Client 端的整合,同时也支持了 CA 认证。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值