728x90
반응형
SMALL
📌 검색 API
- GET <인덱스명>/_search
# Click the Variables button, above, to create your own variables.
GET ${exampleVariable1} // _search
{
"query": {
"${exampleVariable2}": {} // match_all
}
}
# 모든 인덱스 조회
GET /_cat/indices?v
# 인덱스 생성
PUT /movie_index
{
"settings": {
"number_of_shards": 1,
"number_of_replicas": 1
},
"mappings": {
"properties": {
"name": {
"type": "text"
},
"year": {
"type": "integer"
},
"genre": {
"type": "text"
}
}
}
}
# 인덱스 삭제
DELETE movie_index
# 매핑정보 조회
GET /movie_index/_mapping
# movie라는 인덱스에 데이터 삽입
# id값 랜덤삽입
POST /movie_index/_doc
{
"name":"game of throne 1",
"year": 2020,
"genre": "액션"
}
# id값 3으로 명시
POST /movie_index/_doc/3
{
"name":"game of throne 6",
"year": 2028,
"genre": "애니메이션 호러 스릴러 여름맞이 19세이상"
}
# 추가 삽입
POST /movie_index/_doc
{
"name":"game of throne 9",
"year": 2023,
"genre": "액션 19세이상"
}
# 추가 삽입
POST /movie_index/_doc
{
"name":"game of throne 2",
"year": 2024,
"genre": "액션 호러"
}
# 추가 삽입
POST /movie_index/_doc
{
"name":"game of throne 3",
"year": 2025,
"genre": "호러 공포"
}
# 기본검색(1) - 모든 도큐먼트 조회 (=match_all)
GET movie_index/_search
# 기본검색(2) - 카운팅
GET movie_index/_count
# URI 검색(1) - 기본
GET movie_index/_search?q=액션
# URI 검색(2) - 연산자 (무조건 대문자로)
GET movie_index/_search?q=애니메이션 OR 2025
# URI 검색(3) - 특정 컬럼
GET movie_index/_search?q=genre:스릴러
# 멀티테넌시(1) - 쉼표로 여러 인덱스 검색 가능 (띄어쓰기 불가)
PUT drama_index
GET movie_index,drama_index/_search?q=스릴러
# 멀티테넌시(2) - 별표로 여러 인덱스 검색 가능
GET *_index/_search?q=스릴러
# 멀티테넌시(3) - 모든 인덱스를 _all로 검색 가능 (웬만하면 미사용 권장)
GET _all/_search?q=스릴러
# 모든문서 검색(1) - 쿼리 없이 실행
GET movie_index/_search
# 모든문서 검색(2) - 쿼리로 실행
GET movie_index/_search
{
"query": {
"match_all": {}
}
}
# 조건검색(1) - match 특정필드 ex) like '%String%'
GET movie_index/_search
{
"query": {
"match": {
"genre" : "스릴러"
}
}
}
# 조건검색(2) - 띄어쓰기로 OR 연산 ex) like '%String%' OR like '%String%'
GET movie_index/_search
{
"query": {
"match": {
"genre" : "스릴러 공포"
}
}
}
# 조건검색(3) - operator AND 연산자 명시
GET movie_index/_search
{
"query": {
"match": {
"genre" : {
"query" : "스릴러 공포",
"operator" : "and"
}
}
}
}
# 조건검색(4) - match_phrase 완전일치(공백포함)
GET movie_index/_search
{
"query": {
"match_phrase": {
"genre" : "액션 19세이상"
}
}
}
# 조건검색(5) - slop 빈칸 포함 검색 ex) "공포 ㅇㅇㅇ 스릴러" 조회됨 (slop 2이상 비추)
GET movie_index/_search
{
"query": {
"match_phrase": {
"genre" : {
"query": "공포 스릴러",
"slop" : 1
}
}
}
}
# 조건검색(6) - query_string 루씬의 URI 검색 문법을 본문에 적용하여 검색
# match_phase처럼 구문 검색시 \"String\" 사용해야함
# 한정적인 옵션 사용의 한계점 > 단순 조건에 적합
GET movie_index/_search
{
"query": {
"query_string": {
"default_field": "genre",
"query": "(애니메이션 AND 스릴러) OR \"공포\""
}
}
}
# 조건검색 bool - must, must_not, should, filter > 복합 조건에 적합
# must : 참
# must_not : 거짓
# should : 점수높이기
# filter : 참, 점수계산x, must보다빠른속도, 캐싱가능
# match : sql의 like로 생각하면 편함
# match_phrase : sql의 =로 생각하면 편함
GET movie_index/_search
{
"query": {
"bool": {
"must" : [{ "match" : {"genre" : "액션"} }],
"must_not" : [{ "match_phrase": {"genre" : "액션 19세이상"} }],
"should" : [{ "match": {"genre" : "호러"} }],
"filter" : [{ "match": {"genre" : "호러"} }]
}
}
}
📌 참고자료
- 이전 게시글 : 2023.11.30 - [IT공부/ElasticSearch] - [Elastic Search] 3. 벌크 API - _bulk API
728x90
반응형
LIST
'IT > Elasticsearch' 카테고리의 다른 글
[Elasticsearch] 회사 내부 첨부파일의 내용을 통합 검색할 수 있다면? (feat. Fasoo DRM, Tika, Confluence) (0) | 2024.07.05 |
---|---|
[Elasticsearch] 벡터서치 구현시 텍스트 데이터 벡터화 방법 고민 (0) | 2024.07.03 |
[Elasticsearch] 3. 벌크 API - _bulk API (0) | 2023.11.30 |
[Elasticsearch] 2. 데이터 처리 (0) | 2023.11.28 |
[Elasticsearch] 1. 개념 간단히 이해하기 (2) | 2023.11.27 |