关于springboot2.1.1集成es6.4.3连接linux下es集群无法精准匹配查询的问题

发布于 2022-09-11 21:08:22 字数 2514 浏览 15 评论 0

如题,项目使用的jdk8+springboot2.1.1+es6.4.3首先连接本地(win10)es集群可以正常的进行精准/模糊匹配查询,但是连接linux下的es集群后就查询结果完全发生变化,并且同一个字符串查询的结果也不相同,我的win10下es集群配置如下
第一个es服务:

cluster.name: elasticsearch
node.name: slave-9200
node.master: true
network.host: 0.0.0.0
http.port: 9200
transport.tcp.port: 9300
discovery.zen.ping.unicast.hosts: ["127.0.0.1:9300", "127.0.0.1:9301"]
discovery.zen.minimum_master_nodes: 2

http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-credentials: true

第二个es服务:

cluster.name: elasticsearch
node.name: slave-9201
node.master: true
network.host: 0.0.0.0
http.port: 9201
transport.tcp.port: 9301
discovery.zen.ping.unicast.hosts: ["127.0.0.1:9300", "127.0.0.1:9301"]
discovery.zen.minimum_master_nodes: 2

http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-credentials: true

项目es相关配置如下:

spring:
  data:
    elasticsearch:
      cluster-name: elasticsearch
      cluster-nodes: 127.0.0.1:9300,127.0.0.1:9301

pom.xml中只是添加了一下依赖:

        <!--es依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
        </dependency>

我的java中查询逻辑如下:

//1、条件查询
BoolQueryBuilder builder = QueryBuilders.boolQuery();
//精准匹配(中文)
builder.must(QueryBuilders.matchQuery("callName",log.getCallName()));
//模糊查询(中英文)
builder.must(QueryBuilders.wildcardQuery("requestParam","*"+log.getRequestParam()+"*"));
//范围查询(我es中时间存放的是时间戳)
builder.must(QueryBuilders.rangeQuery("requestTime").gt(startTime.getTime()).lt(endTime.getTime()));
//排序
//2、排序
FieldSortBuilder sortBuilder = SortBuilders.fieldSort("clientRequestTime").order(SortOrder.DESC);
//3、分页
PageRequest pageRequest = PageRequest.of(pageNum-1, pageSize);
//4.构建查询
NativeSearchQueryBuilder nativeSearchQueryBuilder = new NativeSearchQueryBuilder();
//将搜索条件设置到构建中
nativeSearchQueryBuilder.withQuery(builder);
//将分页设置到构建中
nativeSearchQueryBuilder.withPageable(pageRequest);
//将排序设置到构建中
nativeSearchQueryBuilder.withSort(sortBuilder);
//生产NativeSearchQuery
NativeSearchQuery query = nativeSearchQueryBuilder.build();
//执行查询
Page<Log> search = logMapper.search(query);

LogMapper.java代码如下:


@Component("logMapper")
public interface LogMapper extends ElasticsearchRepository<ESInterfaceCallLog,String> {
}

万分感谢

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文