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

新手上路,请多包涵

如题,项目使用的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> {
}

万分感谢

阅读 3.1k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题