반응형
@Document 를 지정후
interface를 이용해서 쿼리를 하던 중
기본검색은 jpa사용하듯 하면되지만
match를 이용하여 모두 조건이 일치할 떄 데이터가 조회해야되는 이슈가 발생
ex) 화정동 현대, 화정동 힐스, 화정 힐스
모두 만족해야되는 상황이 발생
jpa는 match를 이용하면 elasticsearch에서는 기본 or조건이 걸림
[순서]
1- elasticsearch에서 Dev tools를 이용하여 쿼리 작성
GET idx_es_address/_search
{
"query": {
"match": {
"address": {
"query": "화정동 힐스",
"operator": "and",
"analyzer": "korean"
}
}
}
}
2 - 작성된 쿼리를 query 부분을 제외함
{
"match": {
"title": {
"query": "화정동 힐스",
"operator": "and"
}
}
}
3 - 제외된 query를
- codebeautify.org/jsonminifier 가서 minify시킴
{"match":{"title":{"query":"화정동 힐스","operator":"and"}}}
4 -"화정동 힐스" -> ?0 로 변경 <-- 0번째 parameter라는 의미
{"match":{"title":{"query":"?0","operator":"and"}}}
5. interface작성<최종>
@Query("{\"match\":{\"address\":{\"query\":\"?0\",\"operator\":\"and\"}}}")
List<EsAddressVO> findAllByAddressMatches(String addr, Pageable pageable);
반드시 Pageable param을 넣어주는것을 권장
기본 pagesize = 10으로 세팅되어 있음
반응형
'Elasticsearch' 카테고리의 다른 글
elasticsearch를 이용한 주소검색->고객조회 (0) | 2020.11.26 |
---|---|
elasticsearch default page size 기본 페이징 사이즈 (0) | 2020.11.25 |
@Setting, @Mapping nori 설정 (0) | 2020.11.25 |
@Setting, @Mapping nori 설정 (0) | 2020.11.24 |
elasticsearch srping boot connection 설정 (0) | 2020.11.24 |