1. Elasticsearch 검색 Api
검색이란?
수 많은 대상 데이터 중에서 조건에 부합하는 데이터로 범위를 축소하는 행위
풀 텍스트 쿼리
- match_all: 해당 인덱스의 모든 도큐먼트를 검색
- match : 해당 키워드가 포함된 모든 문서 검색.
- match 검색 + 여러개의 검색어 -> OR 조건이 디폴트로 적용. Operator를 통해 변경가능.
-> 소규모 사이트에서는 검색했을때 and 조건이 적용되는 경우가 많았는데 elastic이 적용 안된 건가?, 사용자의 기대는 and일까 or 일까
- match_phrase : 정확하게 일치하는 내용 검색, slop 명령어로 지정된 값만큼의 형태소가 사이에 올 수 있다.
복합쿼리
여러개의 쿼리를 조합하여 사용
- must: 쿼리가 참인 도큐먼트 검색
- must_not: 제외할 검색어 두고 검색
- should: 검색 결과 중 이 쿼리에 해당하는 도큐먼트의 점수를 높임.
정확도
: 정확도를 통해, 사용자가 원하는 결과와 얼마나 부합되는지 알 수 있다.
Elasitc에서는 정확도를 BM25지수를 통해 스코어로 나타낸다.
- TF: 검색어의 형태소가 많이 들어있는 경우
- IDF: 더 포함 빈도가 희소한 검색어일 경우 점수를 높게 줌.
- FL : 더 짧은 필드에 점수를 높게 줌.
Bool:should
검색 점수를 조정하기 위해서 사용
1) 가중치를 주고 싶은 검색어가 있을 때
2) 특정 조건에 부합하는 검색어를 상위로 올리고 싶을 때 사용.
범위 쿼리
숫자 혹은 날짜에 대한 쿼리 (range)
- range : {필드명 : { 파라미터 : 값 } }
gte 이상, gt 초과, lte 이하, lt 미만
- 날짜는 따로 설정을 하지 않는 다면, ISO86 형식으로 넘겨줘야 한다.
포맷을 다르게 하고 싶다면, format 옵션을 통해서 변경 가능하다.