TIL 23.12.12

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

TIL

λͺ©λ‘ 보기
133/146

πŸ“ŒToday I Learned

ElasticSearch

맀핑, Mapping

  • *** ν•œ 번 λ§Œλ“€μ–΄μ§„ 맀핑은 μˆ˜μ •μ΄ λΆˆκ°€λŠ₯ν•˜λ‹€.
  • ν•„λ“œλͺ…은 쀑볡될 수 μ—†λ‹€.
  • ν˜Ήμ‹œλΌλ„ 맀핑정보λ₯Ό μˆ˜μ •ν•΄μ•Ό ν•œλ‹€? > 인덱슀 μ‚­μ œ > 인덱슀 생성
PUT <인덱슀λͺ…>
{
	"mappings": {
    	"properties": {
        	"<ν•„λ“œλͺ…>": {
            	"type": "<ν•„λ“œ νƒ€μž…>",
                <μΆ”κ°€μ„€μ •>
            }
        }
    }
}

μ—˜λΌμŠ€ν‹±μ„œμΉ˜ μžλ£Œν˜•

  • μžλ°”μ™€ 동일

λ¬Έμžμ—΄

  • string> 폐기
  • text, keyword

text

  • λ¬Έμžμ—΄ μžλ£Œν˜•
  • μž…λ ₯된 데이터λ₯Ό ν…€ λ‹¨μœ„λ‘œ μͺΌκ°œμ„œ μ—­ 색인 ꡬ쑰λ₯Ό λ§Œλ“€κ²Œ λœλ‹€.
  • ν’€ ν…μŠ€νŠΈ 검색을 ν•  λŒ€μƒμ„ text μžλ£Œν˜•μœΌλ‘œ μ„ μ–Έν•œλ‹€.(***)
  • κ²€μƒ‰μš©
  • ex) "λ°°κ³ ν”ˆ 강아지" > "λ°°κ³ ν”ˆ", "강아지"

keyword

  • λ¬Έμžμ—΄ μžλ£Œν˜•
  • μž…λ ₯된 데이터λ₯Ό μͺΌκ°œμ§€ μ•Šκ³ , ν†΅μ§Έλ‘œ ν•˜λ‚˜μ˜ ν† ν°μœΌλ‘œ μ €μž₯ν•œλ‹€.
  • κ·Έλ£Ή 짓기 용 > ν†΅κ³„μš©
  • ex) "λ°°κ³ ν”ˆ 강아지 > "λ°°κ³ ν”ˆ 강아지"

숫자

  • long
  • integer
  • short
  • byte
  • double
  • float(32bit)
  • half_float(16bit)
  • μ‚¬λžŒμ°ΎκΈ° -> 이름 -> 뢀뢄검색 μ•ˆν•¨ -> keyword둜 μž‘μ—…ν•˜κΈ°
  • μžλ£Œν˜•μ„ λ‹€λ₯΄κ²Œ μ €μž₯해도 μž…λ ₯된 mapping이 μžˆλ‹€λ©΄ 그에 맞게 μ €μž₯λœλ‹€.
  • λ¬Έμžμ—΄λ‘œ μ €μž₯λ˜μ–΄ 보인닀고 ν•˜λ”λΌλ„ μž…λ ₯된 값을 κ·ΈλŒ€λ‘œ λ³΄μ—¬μ£ΌλŠ” 것이지, μ‹€μ œλ‘œλŠ” μžλ£Œν˜•μ΄ μ²˜λ¦¬κ°€ μ™„λ£Œλ˜μ—ˆλ‹€.

λ‚ μ§œ

  • date
  • ISO8601 ν˜•μ‹μœΌλ‘œ ν‘œν˜„
    - "2023-12-12"
    - "2023-12-12T09:47:46"
    - "2023-12-12T09:47:46+09:00"
  • μ–΄λ–€ ν˜•μ‹μœΌλ‘œ μ €μž₯을 ν•˜λ˜μ§€ > λ‚΄λΆ€μ μœΌλ‘œλŠ” 무쑰건 epoch_millis ν˜•μ‹μœΌλ‘œ μ €μž₯ν•œλ‹€.

검색 > 정확도(Relevancy)

  • RDBMS > 검색 > 쑰건에 λ§žλŠ” 데이터인지 μ•„λ‹Œμ§€? ꡬ뢄 > κ²°κ³Ό λ°˜ν™˜ > μ–Όλ§ˆλ‚˜ 쑰건에 μ •ν™•ν•˜κ²Œ λΆ€ν•©λ˜λŠ”μ§€λŠ” νŒλ‹¨ λΆˆκ°€λŠ₯
  • Elasticsearch > 검색 > 검색 κ²°κ³Όκ°€ μž…λ ₯된 쑰건과 μ–Όλ§ˆλ‚˜ μ •ν™•ν•˜κ²Œ μΌμΉ˜ν•˜λŠ”μ§€ 계산해쀀닀. (μ•Œκ³ λ¦¬μ¦˜ 쑴재)

μŠ€μ½”μ–΄, Score

  • κ²€μƒ‰λœ κ²°κ³Όκ°€ μ–Όλ§ˆλ‚˜ 쑰건에 λΆ€ν•©λ˜λŠ”μ§€λ₯Ό λ‚˜νƒ€λ‚΄λŠ” 숫자
  • BM25 μ•Œκ³ λ¦¬μ¦˜(Best Matching)
  • 이 κ³„μ‚°μ—λŠ” TF, IDF, Field Length 3가지 μš”μ†Œκ°€ μ‚¬μš©λœλ‹€.
  • full text κ²€μƒ‰μ—μ„œ μž‘μš©ν•œλ‹€.

TF, Term Frequency

  • ν•˜λ‚˜μ˜ λ„νλ¨ΌνŠΈ λ‚΄μ—μ„œ 텀이 μ–Όλ§ˆλ‚˜ 많이 λ°œκ²¬λ˜λŠ”μ§€?
  • ex) "μžλ°”" > 검색
    - κ²°κ³Ό 2개의 λ„νλ¨ΌνŠΈ
    Β Β Β Β - 1번 λ„νλ¨ΌνŠΈ > "μžλ°”" 단어가 5번
    Β Β Β Β - 2번 λ„νλ¨ΌνŠΈ > "μžλ°”" 단어가 10번

IDF, Inverse Document Frequency

  • 텀이 발견된 λ„νλ¨ΌνŠΈμ˜ κ°œμˆ˜κ°€ μ–Όλ§ˆλ‚˜ λ§Žμ€μ§€?
  • ex) "μ—˜λΌμŠ€ν‹±μ„œμΉ˜ μ„€μΉ˜" > 검색
    - "μ—˜λΌμŠ€ν‹±μ„œμΉ˜" > 10개 > ν¬μ†Œμ„±μ΄ 더 λ†’λ‹€ > μ€‘μš”λ„κ°€ λ†’λ‹€
    - "μ„€μΉ˜" > 1000개

Field Length

  • κ²€μƒ‰λœ λ„νλ¨ΌνŠΈμ˜ 길이에 따라 정확도 반영
  • ex) "μžλ°”" 검색
    - 1번 λ„νλ¨ΌνŠΈ > message("μžλ°” 자료") > μ€‘μš”λ„κ°€ λ†’λ‹€
    - 2번 λ„νλ¨ΌνŠΈ > message("μ•ˆλ…•ν•˜μ„Έμš”. μ €λŠ” ν™κΈΈλ™μž…λ‹ˆλ‹€. μ €λŠ” μ˜¬ν•΄ λŒ€ν•™μ„ μ‘Έμ—…ν–ˆκ΅¬μš”. λΉ„μ „κ³΅μžμž…λ‹ˆλ‹€. μ €λŠ” μ˜μ—…μ„ ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€. 취미둜 μžλ°” 곡뢀도 ν–ˆμ–΄μš”.")

Geo Point

  • μœ„λ„, 경도λ₯Ό μ €μž₯ν•˜λŠ” μžλ£Œν˜•









ν•„ν„° 선택


μ›ν•˜λŠ” ν•„λ“œλ§Œ 보기


차트 생성








-> geo_pointκ°€ μ•„λ‹ˆλΌ float둜 μ €μž₯λ˜μ–΄μ„œ 였λ₯˜ λ°œμƒ

geo_point둜 μˆ˜μ • ν›„


https://data.seoul.go.kr/dataList/OA-21232/S/1/datasetView.do;jsessionid=C977BE19B59CA5AF890B5B9D7C77A158.new_portal-svr-11







latκ³Ό lon은 μ˜ˆμ•½μ–΄

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

0개의 λŒ“κΈ€