TIL 23.12.05

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

TIL

λͺ©λ‘ 보기
130/146

πŸ“ŒToday I Learned

ElasticSearch

elasticsearch, kibana 싀행쀑인지 확인

  • $ systemctl status elasticsearch > Active: active (running)
  • $ systemctl status kibana > Active: active (running)

  • $ sudo systemctl start νŒ¨ν‚€μ§€λͺ…
  • $ sudo systemctl stop νŒ¨ν‚€μ§€λͺ…
  • $ sudo systemctl status νŒ¨ν‚€μ§€λͺ…
  • $ sudo systemctl restart νŒ¨ν‚€μ§€λͺ…

λΈŒλΌμš°μ €


Elasticsearch

  • ꡬ쑰: JSON을 μ €μž₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨ > REST API
  • μš©λ„: 검색 엔진

데이터 μ €μž₯ λ‹¨μœ„ > Document == JSON ν˜•νƒœ

νšŒμ› 정보 μ €μž₯ μ‹œ

[였라클]

  1. ν…Œμ΄λΈ” μ„ μ–Έ
    • 컬럼 μ •μ˜(이름(varchar2), λ‚˜μ΄(number), μ£Όμ†Œ(varchar2))
  2. insert
    • λ ˆμ½”λ“œ μΆ”κ°€

[Elasticsearch]

  1. Index(Type) μ„ μ–Έ
    • μ €μž₯ κ·œμΉ™(X) > κ°•μ œμ„±(X)
  2. 데이터 μΆ”κ°€(JSON)
{
	"name": "홍길동",
    "age": 20,
    "address": "μ„œμšΈμ‹œ"
}

{
	"name": "μ•„λ¬΄κ°œ",
    "age": 25,
    "address": "μΈμ²œμ‹œ"
}

{
	"nick": "호호호",
    "gender": "f"
}

=> 검색할 λŒ€μƒλ§Œ λ”°λ‘œ Elasticsearchμ—μ„œ μ²˜λ¦¬ν•˜κ³  oracleκ³Ό μ—°κ²°ν•˜μ—¬ μ‚¬μš©ν•œλ‹€.

kibana μ„€μ •νŒŒμΌμ— elasticsearch κ²½λ‘œκ°€ localhost둜 μ €μž₯λ˜μ–΄ μžˆλ‹€. (같은 μš°λΆ„νˆ¬μ—μ„œ μ‹€ν–‰ν•˜κΈ° λ•Œλ¬Έμ—)
λ‹€λ₯Έ μ»΄ν“¨ν„°μ—μ„œ esκ³Ό kibanaλ₯Ό μ‚¬μš©ν•˜λ©΄ localhostλŒ€μ‹  λ‹€λ₯Έ 경둜λ₯Ό μ μ–΄μ•Όν•œλ‹€.


Elasticsearch κ²€μƒ‰ν•˜κΈ°

Elasticsearch == ν’€ ν…μŠ€νŠΈ 검색을 μ§€μ›ν•˜λŠ” 검색 μ—”μ§„μž…λ‹ˆλ‹€.

  • κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€μ— λΉ„ν•΄μ„œ λ‹€μ–‘ν•˜κ³ /효과적인 검색 κΈ°λŠ₯을 μ œκ³΅ν•œλ‹€.
  • νŠΉμ§• > ν’€ ν…μŠ€νŠΈ 검색을 μ§€μ›ν•œλ‹€.
  • 검색 > QueryDSL(Query Domain Specific Language)

  • 검색은 Indexλ₯Ό λŒ€μƒμœΌλ‘œ μˆ˜ν–‰λœλ‹€.
  • GET <인덱슀λͺ…>/_search > match_all 검색이 μˆ˜ν–‰λœλ‹€.

검색 방식

  1. URI 검색 (맀우 κ°„λ‹¨ν•œ 검색 μ‹œ μ‚¬μš©)
  2. JSON Data Body 검색 > 주둜 μ‚¬μš©

1.URI 검색

# URI 검색
# λͺ¨λ“  ν•„λ“œμ—μ„œ m μ°ΎκΈ°
GET member/_search?q=m

GET member/_search?q=f

GET member/_search?q=κ°•μ„œκ΅¬


# κ°•μ„œκ΅¬ + λ‚¨μž
GET member/_search?q=κ°•μ„œκ΅¬ AND m

GET member/_search?q=κ°•μ„œκ΅¬ AND f

GET member/_search?q=κ°•μ„œκ΅¬ OR m

GET member/_search?q=κ°•μ„œκ΅¬ NOT m

GET member/_search?q=κ°•μ„œκ΅¬ AND m AND μ΄κ΄‘μˆ˜


# ν•„λ“œλͺ… ν‘œμ‹œ > ν•΄λ‹Ή μ»¬λŸΌμ—μ„œλ§Œ μ°ΎκΈ°
GET member/_search?q=address:κ°•μ„œκ΅¬

GET member/_search?q=address:κ°•μ„œκ΅¬ AND gender:m

  1. JSON Data Body 검색
  • 데이터 λ³Έλ¬Έ 검색
  • 검색할 쿼리λ₯Ό 전솑할 데이터 본문에 λ„£μ–΄μ„œ μž…λ ₯ν•˜λŠ” 방식

  • κ°€μž₯ 많이 μ‚¬μš©ν•˜λŠ” 쿼리 > match 쿼리
GET <λ„νλ¨ΌνŠΈ>/_search
{
	"query": {
    	"쿼리의 μ’…λ₯˜": {
        	세뢀사항
        }
    }
}

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

GET member/_search
{
	"query": {
    	"match": {
        	"gender": "f"
        }
    }
}

λ©€ν‹°ν…Œλ„Œμ‹œ, Multitenancy

  • μ—¬λŸ¬ 개의 Indexλ₯Ό ν•œλ²ˆμ— λ¬Άμ–΄μ„œ 검색할 수 μžˆλŠ” κΈ°λŠ₯ => union
  • ν”„λ‘œκ·Έλž¨μ˜ 둜그 파일 뢄석 > logs-2023-01, logs-2023-02, logs-2023-03 ..
  • μ‹œκ°„μˆœμœΌλ‘œ μŒ“μ΄λŠ” 데이터에 μ μš©ν•˜κΈ° μ’‹λ‹€.

GET logs-2023-01,logs-2023-02,logs-2023-03/_search

GET logs-*/_search -> μ™€μΌλ“œμΉ΄λ“œ μ‚¬μš© κ°€λŠ₯

GET _all/search -> λͺ¨λ“  Indexλ₯Ό λŒ€μƒμœΌλ‘œ 검색(μž‘μ—… λΆ€ν•˜ 심함 -> 잘 μ•ˆμ“΄λ‹€)

profile
μ°¨κ·Όμ°¨κ·Ό ν•˜λ‚˜μ”©

0개의 λŒ“κΈ€