关于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> {
}
万分感谢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论