1. 程式人生 > 其它 >【spring】springboot使用jpa整合elasticsearch7.0

【spring】springboot使用jpa整合elasticsearch7.0

背景

springboot的data jpa是支援elasticsearch的。在springboot2.3之前,連線es的埠是9300,但實測下來各種版本之間對應關係很複雜,springboot2.3【注:具體哪個版本沒有實測】之後可以配置rest介面方式連線es,理論上可以適配所有版本的es了

過程

依賴

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</
artifactId> <version>2.3.1.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <
artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency>

yml配置:

spring:
  elasticsearch:
    rest:
      uris: localhost:9200

介面編寫:

package com.jsfactory.back.api.search.repository;

import com.jsfactory.back.api.search.entity.WorkshopSearch;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;

import java.util.List; public interface WorkshopRepository extends ElasticsearchRepository<WorkshopSearch,String> { List<WorkshopSearch> findByDescription(String desc); List<WorkshopSearch> findByTownNameOrNameOrDistrictNameOrDescriptionOrCustomerNameOrCityNameOrTags(String townName, String name, String districtName, String description, String customerName, String cityName, String tag); void deleteByWorkshopId(Long workshopId); }

測試:

    @Autowired
    private WorkshopRepository workshopRepository;

    @Test
    @Ignore
    public void searchEsTest() {
        String value = "風景";
        List<WorkshopSearch> workshopSearches = workshopRepository.findByTownNameOrNameOrDistrictNameOrDescriptionOrCustomerNameOrCityNameOrTags(value, value, value, value, value, value, value);
        Assert.assertEquals(10, workshopSearches.size());
    }

以上