下载完镜像,运行,浏览器查看都没问题,但是项目运行报错
elasticsearch.client.transport.NoNodeAvailableException:
None of the configured nodes are available: [{#transport#-1}{HR7PO0wtQ36Yum4yX6OEEg}{1
百度半天感觉最可疑的是一个版本问题
版本对照
而我查看发现我本地maven的这个版本对应的是6.2.2,而不是现在docker的版本,重新部署一下试试。
pom如下:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-elasticsearch</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-elasticsearch</artifactId>
<version>3.2.5.RELEASE</version>
</dependency>
6.2.2版本dockerpull不下来,尝试使用6.5.0,发现可以使用。
配置:
一共就三个地方,pom加入依赖,创建对象,实现模板类接口,yml添加配置信息
yml:
data:
elasticsearch:
cluster-name: docker-cluster
cluster-nodes: 127.0.0.1:9300
repositories:
enabled: true
对象类
@ApiModel(value="ring", description="环比对象")
@Data
@Document(indexName = "ring", type = "java")
public class RingPO<T> {
@Id
private String id;
@ApiModelProperty(value="数据名称",name="value",example="其他保单")
private String value;
@ApiModelProperty(value="数据",name="data",example="18900.00")
private T data;
}
这里需要注意的点,第一必须有@Document 和id属性。这两个是elasticsearch需要的内容。
实现接口:
@Configuration
public interface DemoElasticsearchRepository extends ElasticsearchRepository<RingPO, String> {
}
这里可以写一些你自定义的方法,你可以理解成这就是dao层。
这个ElasticsearchRepository有一些自带的属性和方法。具体参考如下:
Keyword Sample
And `findByTitleAndPrice``findBy属性名1And属性名2
Or findByTitleOrPrice
Is= findByTitle
Not findByTitleNot
Between findByPriceBetween
LessThanEqual findByPriceLessThan
GreaterThanEqual findByPriceGreaterThan
Before findByPriceBefore
After findByPriceAfter
Like findByNameLike
StartingWith findByNameStartingWith
EndingWith findByNameEndingWith
Contains/Containing findByNameContaining
In findByNameIn(Collection<String>names)
NotIn findByNameNotIn(Collection<String>names)
Near findByStoreNear
True findByAvailableTrue
False findByAvailableFalse
OrderBy findByAvailableTrueOrderByNameDesc
网友评论