반응형
인덱스 설명
현재 review 인덱스를 생성하였고, review 인덱스의 필드는 아래와 같이 구성되어 있다.
"mappings": {
"properties": {
"prd_id": {
"type": "text"
},
"review_id": {
"type": "text"
},
"review": {
"type": "text"
},
"genders": {
"type": "rank_features"
}
}
}
매칭 쿼리
전문(Full-text query) 쿼리로 Match 키워드를 가지고 검색하는 쿼리이다.
match에서 사용하는 검색어도 토큰화가 되어 검색한다. 저장된 원문 역시 토큰화 되어 저장되어 있어 가능하다.
하나의 용어를 검색하는 쿼리
GET review/_search
{
"_source": ["review"],
"query": {
"match": {
"review": {
"query": "오버핏"
}
}
}
}
하나의 용어를 검색하는 쿼리에서 키워드 사이에 공백이 있다면 or로 인식, 토큰화 되어 검색된다.
GET review/_search
{
"_source": ["review"],
"query": {
"match": {
"review": {
"query": "오버핏 맨투맨"
}
}
}
}
만약 and 조건으로 검색해야 한다면 아래 처럼 작성하면 된다.
GET review/_search
{
"_source": ["review"],
"query": {
"match": {
"review": {
"query": "오버핏 맨투맨",
"operator": "and"
}
}
}
}
매치 프레이즈 쿼리(Match-Phrase)
구(phrase)를 검색하는 쿼리이다. 즉, 2개 이상의 단어가 연결된 문구를 조회할 때 사용한다.
이는 단어 순서까지 고려하여 결과를 추출한다.
예) 빨간 바지, 바지 빨간색은 검색 의도가 전혀 다를 수 있다.
// 이쁜 맨투맨
GET review/_search
{
"_source": ["review"],
"query": {
"match_phrase": {
"review": "이쁜 맨투맨"
}
}
}
검색 결과
"review" : "이쁜 맨투맨 적당하게 잘 샀네요. 이쁜상품 감사합니다."
"review" : "때에 맞는 맨투맨이네요ㅎㅎㅎ 이쁜 맨투맨 저렴하게 구입하고 가서 좋습니다~~"
//맨투맨 이쁜
GET review/_search
{
"_source": ["review"],
"query": {
"match_phrase": {
"review": "맨투맨 이쁜"
}
}
}
검색 결과
"review" : "파스텔톤 맨투맨 이쁜 비바스튜디오 강추합니다"
"review" : "그냥 진짜 무난한 맨투맨 이쁜 아우터 이너로 입기 적당"
🔥 용어(term) 쿼리를 공부하다보니, 현재 설정했던 필드 타입이 맞지 않았다. 모두 text 타입으로 했기 때문에 텍스트 내 키워드를 개별 검색하는 기능이 동작하지 않았다. 그래서 이번 기회에 nori-filter를 적용하거나 text 내부에 keyword 필드를 적용하는 연습을 해야겠다!
반응형
'Elastic Search' 카테고리의 다른 글
[Elastic Search] MBTI 검색 프로젝트 - 1. 검색 Score 튜닝 (0) | 2022.04.12 |
---|---|
[Elastic Search] 검색 구현하기(with Fast API) (0) | 2022.02.15 |
[Elastic Search] Nori Tokenizer & Filter 적용기 (0) | 2022.02.09 |
[Elastic Search] Query 스터디-3편 필드 가중치, 논리 쿼리, 패턴 검색 (2) | 2022.02.03 |
[Elastic Search]Query 스터디-2편 Term 쿼리, Multi-match 쿼리 (0) | 2022.01.29 |