1. 程式人生 > 其它 >springboot 整合 elasticsearch6.5.3(demo)

springboot 整合 elasticsearch6.5.3(demo)

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