springboot 整合 elasticsearch6.5.3(demo)
阿新 • • 發佈:2021-11-26
elasticsearch整合springboot的時候各種版本要對應,不然各種報錯很麻煩。
1.開發環境:
elasticsearch 6.5.3 埠2001 3001 單機部署
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
//indexName 庫名 type 表名 public class Elasticsearch implements Serializable { @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); } }
已經測試通過
@Document(indexName = "hljygl",type = "elate",shards = 1,replicas = 0, refreshInterval = "-1")
@Data
public class Elasticsearch implements Serializable {
@Id
private String id;
@Field(type = FieldType.Text)
private String tabName;
@Field(type = FieldType.Text)
private String content;
}
本文來自部落格園,作者:小輝輝。。,轉載請註明原文連結:https://www.cnblogs.com/zjylsh/p/15608954.html