spring elasticsearch坑
spring elasticsearch坑
- 高版本的elasticSearch(6.5.1)一定要用高版本的客户端
- 例如:springboot版本2.1.1.RELEASE
- 高版本的elasticSearch(6.5.1)不支持type了
- 用logstash-jdbc-input导入数据时需要指定类型为doc
document_type => "doc"
- 注意spring连接elasticSearch时,需要指定集群名称
- 默认是:elasticsearch
- docker容器启动的是:docker-cluster
- spring配置如下:
spring.data.elasticsearch.repositories.enabled = true spring.data.elasticsearch.cluster-name=docker-cluster spring.data.elasticsearch.cluster-nodes = 192.168.8.169:9300
- 实体index配置如下:
@Document(indexName = "orde_order", type = "doc")
- findById等方法查询后属性值有的是null。原因是通过logstash-jdbc-input把数据同步到elasticSearch后,是根据数据库的字段来的
- 实体上需要添加注解,将属性驼峰式改为下划线的方式;与elasticSearch数据匹配
@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
- 如果属性和数据库的字段没有明确的转换关系,需要注意,例如:
@Column(name = "logistic_supply_item_id", length = 50) private String supplyItemId; // 物流商id
- spring-boot-starter-data-elasticsearch查询list默认返回10条数据;
- 如果要返回所有需要用以下方法:
Page<Order> findByAppraisement(String appraiisement, Pageable page);
- elasticSearch默认最多返回10000条数据,需要修改
在kibana中的Dev Tools中执行以下命令,把所有index的最大返回都改掉 PUT _all/_settings { "index.max_result_window" : "10000000" } Rest接口方式: curl -XPUT http://192.168.8.169:9200/_all/_settings -H "Content-Type: application/json" -d '{"max_result_window":"10000000"}'
评论已关闭。