【spring】springboot使用jpa整合elasticsearch7.0
阿新 • • 發佈:2021-06-24
背景
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()); }
以上