springboot 集成 elasticsearch6.5.3(demo)
elasticsearch集成springboot的时候各种版本要对应,不然各种报错很麻烦。
1.开发环境:
elasticsearch 6.5.3 端口9201 9301 单机部署
spring-boot 2.2.8 及 2.2.2
9200 用于外部通讯,基于http协议,程序与es的通信使用9200端口
9300 jar之间就是通过tcp协议通信,遵循tcp协议,es集群中的节点之间也通过9300端口进行通信。
2.pom文件
spring-data-elasticsearch版本不用指定,官网上提供的有操作手册可查看
<elasticsearch.version>6.5.3</elasticsearch.version>
<dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> <version>${elasticsearch.version}</version> </dependency> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-elasticsearch</artifactId> </dependency>
3.yml文件配置
string:
data:
elasticsearch:
cluster-nodes: 192.168.*.*:9301
cluster-name: elasticsearch-6.5.3
repositories:
enabled: true
elasticsearch:
rest:
uris: 192.168.*.*:9201
4.Model文件 elasticsearch7.0之前使用springboot-data集成需要指定字段的数据类型,7.0之后不用指定类型
@Document(indexName = "hljygl",type = "elate",shards = 1,replicas = 0, refreshInterval = "-1") @Data
// document 标记实体类为文档对象 indexName 对应索引库名称,相当于数据库名(必须小写) type 相当于表名(对应索引库类型)
// shards 分片数量 replicas 副本数量 indexStoreType 文件存储类型 refreshInterval 多久实行一次刷新 使最近的一次刷新对搜索可见 默认1,-1禁止刷新 public class Elasticsearch implements Serializable { //@id作用成员变量 ID主键
//@Fileld 标记文档字段,指定字段属性类型(type字段类型 text存储的时候自动生成分词并生成索引 keyword 存储的时候不会分词创建索引
// Numerical数值类型 Date 日期类型 index 是否索引 默认true store 是否存储 默认false
// analyzer 分词器名称 ik_max_word 使用ik分词器 auto 自动加载 )
@Id private String id; @Field(type = FieldType.Text) private String tabName; @Field(type = FieldType.Text) private String content; }
kibana视图:
5.Dao层 使用的spring-data-elasticsearch 提供的模板接口,已经提供了一系列的接口,可以满足基本需求
@Component public interface EsDao extends ElasticsearchRepository<Elasticsearch,String> { List<Elasticsearch> queryByContentLike(String content); }
6.Controller层调用
@CrossOrigin @RestController @Api(value = "搜索管理",tags = "搜索管理") @RequestMapping(value = "/hljygl/search") public class SearchController { @Autowired private EsDao service; @ApiOperation("save") @PostMapping("/save") public void save(@RequestParam String id){ Elasticsearch elasticsearch = new Elasticsearch(); elasticsearch.setId(id); elasticsearch.setContent("111"); elasticsearch.setTabName("11111"); service.save(elasticsearch); } @ApiOperation("query") @PostMapping("/query") public ResponseWrapper query(@RequestParam String content){ List<Elasticsearch> elasticises =service.queryByContentLike(content); return new ResponseWrapper.Builder<>().success(elasticises); } }
已经测试通过
}
本文来自博客园,作者:小辉辉。。,转载请注明原文链接:https://www.cnblogs.com/zjylsh/p/15608954.html