π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)