Elasticsearch의 꽃, 데이터 검색 search API
GET sampleindex/_search
GET sampleindex/_search/?q=gender:F
GET sampleindex/_search/?q=F
GET sampleindex/_search/?q=gender:M AND country:korea
GET sampleindex/_search
{
"query": {
"match": {
"company": "아주 조오은 회사"
}
}
}
term
으로 검색했기 때문에 값이 '아주 조오은 회사'인 데이터만 출력GET sampleindex/_search
{
"query": {
"term": {
"company": "아주 조오은 회사"
}
}
}
잠깐🖐, keyword 타입과 text 타입
text 타입
: 데이터가 저장되기 전에 분석되어 역색인 구조로 저장됨
keyword 타입
: 데이터가 더이상 분해되지 않고 그대로 저장됨
예) '엘라스틱서치 완전 정복' 저장 시
text 타입
: 엘라스틱서치 / 완전 / 정복 → '엘라스틱서치', '완전', '정복' 만 검색해도 검색됨
keyword 타입
: 엘라스틱서치 완전 정복 → '엘라스틱서치 완전 정복' 검색시에만 검색됨
GET sampleindex/_search
{
"query": {
"match_phrase": {
"company": "조오은 회사"
}
}
}
GET sampleindex/_search
{
"query": {
"multi_match": {
"query": "서울",
"fields": ["companyAddress", "personalAddress"]
}
}
}
GET sampleindex/_search
와 동일한 기능GET sampleindex/_search
{
"query": {
"match_all": {}
}
}
query
- bool
- must
- match / match_phrase / term / ...
의 구조GET sampleindex/_search
{
"query": {
"bool": {
"must": [
{
"match": {
"nickName": "gee"
}
},
{
"match_phrase: {
"company": "조오은 회사"
}
}
]
}
}
}
query
- bool
- must_noy
- match / match_phrase / term / ...
의 구조GET sampleindex/_search
{
"query": {
"bool": {
"must_not": [
{
"match": {
"nickName": "gee"
}
},
{
"match_phrase: {
"company": "조오은 회사"
}
}
]
}
}
}
GET sampleindex/_search
{
"query": {
"bool": {
"must": [
{
"match": {
"nickName": "gee"
}
},
{
"match_phrase: {
"company": "조오은 회사"
}
}
],
"must_not": [
{
"match": {
"gender": "F"
}
}
]
}
}
}
아주 _다른term_ 회사
인 데이터 검색GET sampleindex/_search
{
"query": {
"match_phrase": {
"company": {
"query": "아주 회사",
"slop": 1
}
}
}
}
GET sampleindex/_search
{
"query": {
"bool": {
"must": [
{
"match": {
"nickName": "gee"
}
}
],
"should": [
{
"match_phrase": {
"company": "조오은 회사"
}
}
]
}
}
}
GET sampleindex/_search
{
"query": {
"bool": {
"must": [
{
"match": {
"nickName": "gee"
}
}
],
"filter": [
{
"bool": {
"must_not": [
{
"match": {
"company": "나쁜 회사"
}
}
]
}
}
]
}
}
}
gt
: greater than - 초과gte
: greater than or equal - 이상lte
: less than or equal - 이하lt
: less than - 미만from
: range 출발점to
: range 끝점GET sampleindex/_search
{
"query": {
"range": {
"age": {
"gte": 20,
"lte": 29
}
}
}
}
GET sampleindex/_search
{
"query": {
"prefix": {
"companyAddress": {
"서울"
}
}
}
}
GET sampleindex/_search
{
"query": {
"serfix": {
"companyAddress": {
"타워"
}
}
}
}
*
: 철자 개수와 무관하게 부분 검색 (≒ sql의 like %)?
: 철자 개수만큼 입력하여 부분 검색 (≒ sql의 like _)GET sampleindex/_search
{
"query": {
"wildcard": {
"nickName": {
"지*"
}
}
}
}
GET sampleindex/_search
{
"query": {
"wildcard": {
"nickName": {
"지?"
}
}
}
}
GET sampleindex/_search
{
"query": {
"exists": {
"field": "salary"
}
}
}
GET sampleindex/_search
{
"size": 20,
"query": {
"match": {
"company": "아주 조오은 회사"
}
}
}
GET sampleindex/_search
{
"_source": ["name", "age", "company"],
"query": {
"match": {
"company": "아주 조오은 회사"
}
}
}
오늘은 여기까지..🔥