Elasticsearch 기초:springboot 통합 elasticsearch
1,springboot 통합 elasticsearch
1.1,pom 파일 도입
org.springframework.boot
spring-boot-starter-data-elasticsearch
1.2, 프로필 응용 프로그램.xml 가입
#
spring.data.elasticsearch.cluster-name=elasticsearch
# , 9300 , !
spring.data.elasticsearch.cluster-nodes=10.1.109.163:9300
#
spring.data.elasticsearch.local=false
#
spring.data.elasticsearch.repositories.enabled=true
2,springboot에서 elasticsearch를 호출하는 다양한 방식
2.1 사용 대상 방식, mybatis와 유사한 처리
import lombok.Getter;
import lombok.Setter;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
@Document(indexName = "es-customer", type = "customer", shards = 2, replicas = 1, refreshInterval = "-1")
@Getter
@Setter
public class Customer {
@Id
private String id;
private String firstName;
private String lastName;
@Override
public String toString() {
return String.format("Customer[id=%s, firstName='%s', lastName='%s']", this.id,
this.firstName, this.lastName);
}
}
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import java.util.List;
public interface CustomerRepository extends ElasticsearchRepository {
public List findByFirstName(String firstName);
public Page findByLastName(String lastName, Pageable page);
public List findByFirstNameAndLastName(String firstName,String lastName);
}
그 중에서 페이지 나누기 Pageable의 구조 방법은 다음과 같다. Pageable pageable = new PageRequest(pageNumber, pageSize).추가 사용 방법 참조:https://github.com/spring-projects/spring-data-elasticsearchspring-data-elasticsearch – 실전 사례 상세 설명(4)
이렇게 하면 autowired를 사용하여 Repository 실례 @Autowired private Customer Repository repository를 주입할 수 있다.
2.2 TransportClient를 사용하여 ES 작업
@Autowired private TransportClient transportClient;
IndexResponse indexResponse = transportClient
.prepareIndex(index, type, "3").setSource(source).get();
System.out.println(indexResponse.getVersion());
그 중에서 source는 jsonString, Map, XContentBuilder 등의 대상이 될 수 있다
UpdateResponse updateResponse = transportClient
.prepareUpdate(index, type, "6").setDoc(source).get();
System.out.println(updateResponse.getVersion());
DeleteResponse deleteResponse = transportClient.prepareDelete(index,
type, id).get();
System.out.println(deleteResponse.getVersion());
Id 기반 질의
GetResponse getResponse = transportClient.prepareGet(index, type, "1").get();
System.out.println(getResponse.getSourceAsString());
복잡한 조건 조회 SearchResponse
SearchResponse searchResponse = transportClient.prepareSearch("es-customer")
.setTypes("customer")
.setQuery(QueryBuilders.matchAllQuery()) //
//.setQuery(QueryBuilders.matchQuery("name", "tom").operator(Operator.AND)) // tom name, or
//.setQuery(QueryBuilders.multiMatchQuery("tom", "name", "age")) //
//.setQuery(QueryBuilders.queryString("name:to* AND age:[0 TO 19]")) // , 0 19
//.setQuery(QueryBuilders.termQuery("name", "tom"))//
.setSearchType(SearchType.QUERY_THEN_FETCH)
.setFrom(0).setSize(10)//
.addSort("lastName", SortOrder.DESC)//
.get();
SearchHits hits = searchResponse.getHits();
long total = hits.getTotalHits();
System.out.println(total);
SearchHit[] searchHits = hits.hits();
for(SearchHit s : searchHits)
{
System.out.println(s.getSourceAsString());
}
참고
스프링-boot 통합elasticsearch 및 그 간단한 응용
https://github.com/whiney/springboot-elasticsearch https://github.com/adalaohu/springboot-elasticSearch
Elasticsearch 노트 5의 자바 작업
2. Elasticsearch의 기능, 사용 장면과 특징
https://github.com/spring-projects/spring-data-elasticsearch
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.