TIL 23.12.06

ν™©μ€ν•˜Β·2023λ…„ 12μ›” 8일
0

TIL

λͺ©λ‘ 보기
131/146

πŸ“ŒToday I Learned

ElasticSearch

# λ„νλ¨ΌνŠΈ(데이터) 확인

# λ„νλ¨ΌνŠΈ 정보
GET address/ 

# 검색 API > λͺ¨λ“  λ„νλ¨ΌνŠΈ
GET address/_search

# νŠΉμ • λ„νλ¨ΌνŠΈ
GET address/_doc/1

# νŠΉμ • λ„νλ¨ΌνŠΈ 순수 데이터
get address/_source/1

# Body Search
# - match 쿼리

GET <λ„νλ¨ΌνŠΈλͺ…>/_search
{
  "query": {
    "match": {
      "<ν•„λ“œλͺ…>": "<검색어>" 
    }
  }
}

# "relation" : "eq" -> 동등비ꡐ

# match all
# - 쑰건없이 ν•΄λ‹Ή Index의 λͺ¨λ“  Document 검색 + λ°˜ν™˜
# - κ²€μƒ‰μ‹œ(_search) 쿼리λ₯Ό 넣지 μ•ŠμœΌλ©΄ μžλ™μœΌλ‘œ match_all을 μ μš©ν•œλ‹€.


# match 쿼리 > λΆ€λΆ„ 검색도 ν•΄μ€€λ‹€.
# - 토큰 검색을 μ§€μ›ν•œλ‹€.(곡백으둜 κ΅¬λΆ„λœ 단어)
# - ν† κ·Ό == ν…€(Term)
# *** μ—˜λΌμŠ€ν‹±μ„œμΉ˜λŠ” ν…€ 검색을 μ§€μ›ν•œλ‹€.

# 두 개 μ΄μƒμ˜ 텀을 κ²€μƒ‰ν•˜λ©΄
# μžλ™μœΌλ‘œ or 연산을 ν•œλ‹€.
GET my_english/_search
{
  "query": {
    "match": {
      "message": "quick dog"
    }
  }
}

# AND 쑰건 > 2개의 텀이 λͺ¨λ‘ μžˆλŠ” λ¬Έμ„œ
# 기본이 "operator": "or"
GET my_english/_search
{
  "query": {
    "match": {
      "message": {
        "query": "quick dog",
        "operator": "and"
      }
    }
  }
}

# match_phrase
# - phrase(ꡬ) > 동사 μ΄μ™Έμ˜ 낱말이 2개 μ΄μƒμœΌλ‘œ κ΅¬μ„±λœ λ¬Έμž₯

# κ°ˆμƒ‰ 강아지 > ꡬ
# κ°ˆμƒ‰κ°•μ•„μ§€ > ν…€
# λ‹€λ₯΄λ‹€.

# - "quick dog", "κ°ˆμƒ‰ 강아지" > or 검색, and 검색
# - "quick dog", "κ°ˆμƒ‰ 강아지" > μ˜¨μ „ν•œ κ·ΈλŒ€λ‘œ 검색

# match_phrase 쿼리
# - slop μ˜΅μ…˜: ν…€μ˜ 개수
# - slop에 μ €μž₯된 숫자만큼 단어 μ‚¬μ΄μ˜ λ‹€λ₯Έ 단어가 λΌμ–΄λ“œλŠ” 것을 ν—ˆμš©
# "slop": 1

# slop이 λ„ˆλ¬΄ 컀지면.. κ²€μƒ‰λ²”μœ„ λ„ˆλ¬΄ λ„“μ–΄μ Έμ„œ 관련이 λ„ˆλ¬΄ μ—†λŠ” κ²°κ³Όλ₯Ό 초래.. μ λ‹Ήνžˆ.. 1~2

# Bool Query
# - Bool 볡합 Query
# - μ—¬λŸ¬ 쿼리λ₯Ό μ‘°ν•©ν•˜λŠ” μš©λ„
# - μƒμœ„μ—μ„œ bool 쿼리
# - ν•˜μœ„μ—μ„œ λ‹€λ₯Έ 쿼리 > μ‘°ν•©
# - 4개의 인자
# 1. must: 쿼리가 참인 λ¬Έμ„œλ₯Ό λ°˜ν™˜ > AND μ—°μ‚°
# 2. must_not: 쿼리가 거짓인 λ¬Έμ„œλ₯Ό λ°˜ν™˜
# 3. should: 검색 κ²°κ³Ό 쀑 ν•΄λ‹Ή 쿼리 κ²°κ³Ό 점수λ₯Ό λ†’νžŒλ‹€.
# 4. filter : 쿼리가 참인 λ¬Έμ„œλ₯Ό λ°˜ν™˜, 점수λ₯Ό κ³„μ‚°ν•˜μ§€ μ•ŠλŠ”λ‹€. must보닀 검색 속도가 λΉ λ₯΄λ‹€.

GET <인덱슀λͺ…>/_search
{
  "query": {
    "bool": {
      "must": [
        {쿼리}, {쿼리}, ...  
      ],
      "must_not": [
        {쿼리}, {쿼리}, ...  
      ],
      "should": [
        {쿼리}, {쿼리}, ...  
      ],
      "filter": [
        {쿼리}, {쿼리}, ...  
      ],
    }
  }
}

# κ²€μƒ‰μ—μ„œ 많이 μ‚¬μš©ν•˜λŠ” 쿼리
# - 'quick', 'lazy dog' λ‘˜ λ‹€ ν¬ν•¨λœ λ¬Έμ„œ 검색
# - 'quick' > match
# - 'lazy dog' > match(x), match_phrase(o)
profile
μ°¨κ·Όμ°¨κ·Ό ν•˜λ‚˜μ”©

0개의 λŒ“κΈ€