[Elasticsearch] Index Template ๊ตฌ์„ฑํ•˜๊ธฐ with Kibana & Logstash (2) - Mapping ๊ธฐ์ดˆ

2023. 7. 14. 10:42ยท๐Ÿฅ Web/โ” Back-end | etc.
๋ชฉ์ฐจ
  1.  
  2. 1. ์˜ˆ์ œ ๋ฐ์ดํ„ฐ
  3. 2. Elasticsearch Mapping ๊ตฌ์„ฑํ•˜๊ธฐ
  4. 3. Elasticsearch Multi-Field(Search as you type)
728x90

2023.07.06 - [Web/Back-end \ etc.] - [Elasticsearch] Index Template ๊ตฌ์„ฑํ•˜๊ธฐ with Kibana & Logstash (1) - Setting

 

[Elasticsearch] Index Template ๊ตฌ์„ฑํ•˜๊ธฐ with Kibana & Logstash (1) - Setting

Elasticsearch์— ๋ฐ์ดํ„ฐ๋ฅผ ์ ์žฌํ•  ๋•Œ, ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ ์žฌํ• ์ง€์— ๋Œ€ํ•œ ์„ธํŒ…์„ ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค. Elasticsearch๋Š” ์—ญ์ƒ‰์ธ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ธ๋ฑ์‹ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์—ญ์ƒ‰์ธ์˜ ๊ธฐ์ค€์ด ๋˜๋Š” ๋‹จ์–ด(token)

dnai-deny.tistory.com

 

์ด์ „ ํฌ์ŠคํŒ…์— ์ด์–ด ์ด๋ฒˆ์—๋Š” Index Template์˜ ๋‘ ๋ฒˆ์งธ ์ฃผ์š” ๊ตฌ์„ฑ์ธ Mapping ์˜์—ญ์„ ์‚ดํŽด๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค. 

Mapping์€ (๋‚ด๊ฐ€ ์ดํ•ดํ•˜๊ธฐ๋กœ๋Š”) Database์˜ Column์„ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ๊ณผ ๋น„์Šทํ•˜๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๋‹ค๋งŒ Elasticsearch๋Š” ์—ญ์ƒ‰์ธ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, Multi-Field๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ•˜๋‚˜์˜ Column์— ๋Œ€ํ•ด์„œ ์—ฌ๋Ÿฌ ๊ฐ€์ง€์˜ ์ธ๋ฑ์‹ฑ ๋ฐฉ๋ฒ•, analyzer๋ฅผ ๋„์ž…ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ฐจ์ด์ ์ด ์žˆ๋‹ค. 

Mapped Field๋ฅผ ์ œ์™ธํ•˜๊ณ  Runtime Field๋‚˜ Dynamic templates์— ๋Œ€ํ•ด์„œ๋Š” ๋” ๊ณต๋ถ€๊ฐ€ ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์—(...) ์—ฌ๊ธฐ์„œ ๋‹ค๋ฃจ์ง€๋Š” ์•Š๊ฒ ๋‹ค. ์•„์ฃผ ๊ธฐ์ดˆ์ ์ธ Mapping๋งŒ ๋‹ค๋ค„๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค.

 

1. ์˜ˆ์ œ ๋ฐ์ดํ„ฐ

์˜ˆ์ œ๋กœ ์“ธ ๋ฐ์ดํ„ฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ์ด ๋‹ค์„ฏ ๊ฐœ์˜ column์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉฐ, ๊ฐ„๋‹จํ•œ ๊ธ€์— ํฌํ•จ๋˜๋Š” ๋ฐ์ดํ„ฐ๋“ค์ด๋‹ค. ๋ฐ์ดํ„ฐ ํƒ€์ž…๊ณผ ๋ชฉ์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. FastAPI์—์„œ SQLAlchemy ์—ฐ๊ฒฐ์„ ์œ„ํ•ด ์ž‘์„ฑํ•œ ์ฝ”๋“œ์ด๋‹ค.

  • id : post id(Integer)
  • time : ๋ฐœํ–‰ ์‹œ๊ฐ„(Datetime)
  • title : ๊ธ€ ์ œ๋ชฉ(String/Text)
  • content : ๊ธ€ ๋‚ด์šฉ(String/Text)
  • writer : ์ž‘์„ฑ์ž(String/Text)

 

2. Elasticsearch Mapping ๊ตฌ์„ฑํ•˜๊ธฐ

kibana์—์„œ ์ด์ „ ํฌ์ŠคํŒ…์˜ ๊ทธ ํ™”๋ฉด, index management - index template์—์„œ mapping ๋ถ€๋ถ„์„ ์ˆ˜์ •ํ•ด์ฃผ๋ฉด ๋œ๋‹ค. 

์šฐ์„  Database์—์„œ ์ •์˜ํ•œ Column ์˜ ํƒ€์ž…๋Œ€๋กœ Field๋ฅผ ์ƒ์„ฑํ•ด์ค€๋‹ค. Integer์€ Numeric - Long์œผ๋กœ ์„ ํƒํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

์„ ํƒํ•˜๋ฉด์„œ ๋ณผ ์ˆ˜ ์žˆ์—ˆ๋‹ค์‹œํ”ผ ์—„์ฒญ๋‚˜๊ฒŒ ๋งŽ์€ type๋“ค์„ ์ง€์›ํ•˜๊ณ  ์žˆ๋‹ค. multi-field๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์ „์— Text ํƒ€์ž… ํ•„๋“œ์— ๋Œ€ํ•ด์„œ analyzer๋ฅผ ์ปค์Šคํ…€ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค. ์ € ์—ฐํ•„๋ชจ์–‘์„ ๋ˆ„๋ฅด๊ณ , Show Advanced settings ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์ด๋Ÿฐ ์ฐฝ์ด ์‚ฌ์ด๋“œ์—์„œ ๋‚˜์˜จ๋‹ค.

Analyzer ์˜์—ญ์— Index and search analyzer๊ฐ€ ๋ˆˆ์— ๋ˆ๋‹ค. Default๋Š” ์ƒ‰์ธ์šฉ analyzer์™€ ๋‚˜์ค‘์— ๊ฒ€์ƒ‰ํ•  ๋•Œ ๊ฒ€์ƒ‰์–ด ์ฟผ๋ฆฌ๋ฅผ ์ฒ˜๋ฆฌํ•  analyzer ๋ฅผ ๋™์ผํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค. ๋‹ค๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์ € ์ฒดํฌ๋ฅผ ํ’€๊ณ  ๋”ฐ๋กœ ์„ค์ •ํ•ด๋„ ๋œ๋‹ค.

analyzer๋ฅผ custom analyzer๋กœ ์„ค์ •ํ•˜๋ฉด Settings ์—์„œ ์„ค์ •ํ•ด๋‘์—ˆ๋˜ whitespace_analyzer์™€ nori_analyzer๊ฐ€ ์žˆ๋‹ค.

์ด๋ ‡๊ฒŒ setting์—์„œ ์ปค์Šคํ…€ํ•œ analyzer๋ฅผ ์„ ํƒํ•˜๊ฑฐ๋‚˜, ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณต๋˜๋Š” ๋‹ค๋ฅธ analyzer๋ฅผ ๊ณจ๋ผ์ฃผ๋ฉด ๋œ๋‹ค. ๋‚˜๋Š” ์šฐ์„  title๊ณผ content ํ•„๋“œ์— nori_analyzer๋ฅผ ์ ์šฉํ–ˆ๋‹ค.

 

3. Elasticsearch Multi-Field(Search as you type)

๋งŽ์€ ๋ถ„๋“ค์ด ์ด ๊ธ€์„ ๋ณด๊ณ  ์žˆ๋Š” ์ด์œ ๋Š” ๋†’์€ ํ™•๋ฅ ๋กœ ๊ฒ€์ƒ‰์—”์ง„ ์ ์šฉ์„ ์œ„ํ•œ ๊ฒƒ์ผ ๋“ฏ ํ•œ๋ฐ, ๊ทธ ๋ชฉ์ ์— ๋”ฑ ์•Œ๋งž์€ type์ด ์žˆ๋‹ค. ๋ฐ”๋กœ Search as you type์ด๋‹ค. 

์ด๋ฆ„๋งˆ์ € ์ด์ƒํ•œ ์ด ํƒ€์ž…์€ Text์— ๋Œ€ํ•ด์„œ ์•Œ์•„์„œ! 2-gram, 3-gram, pharse prefix๊นŒ์ง€ ์ˆ˜ํ–‰ํ•ด์„œ ๊ฒ€์ƒ‰์„ ์šฉ์ดํ•˜๊ฒŒ ๋„์™€์ค€๋‹ค. ์ด๋ฅผํ…Œ๋ฉด ์ด๋Ÿฐ ๊ฒƒ์ด๋‹ค.

Hello my name is Dnai. 

๋ผ๋Š” ๋ฌธ์žฅ์ด ์žˆ์œผ๋ฉด, Search-as-you-type์€ ์•„๋ž˜์™€ ๊ฐ™์ด ์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ•์œผ๋กœ ์ƒ‰์ธ์„ ํ•ด์ค€๋‹ค.

  • 2-gram = Hello my / my name / name is / is Dnai
  • 3-gram = Hello my name / my name is / name is Dnai
  • pharse prefix = H / He / Hel / Hell / Hello ...

๊ฒ€์ƒ‰ ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ์ผ๋ถ€๋งŒ ์จ๋„ ์ฐฐ๋–ก๊ฐ™์ด ์ฐพ์•„์ค„ ์ˆ˜ ์žˆ๋‹ค. ์•„์ฃผ ํŽธ๋ฆฌํ•œ ๊ธฐ๋Šฅ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๊ฒ ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๊ฑธ ๊ธฐ์ค€์œผ๋กœ title๊ณผ content์— multi-field๋ฅผ ๋งŒ๋“ค์–ด์ค„ ๊ฒƒ์ด๋‹ค. ๋ˆ„๊ฐ€๋ด๋„ ๋ณต์‚ฌ์ธ ๊ฒƒ ๊ฐ™์€ ์•„์ด์ฝ˜์„ ๋ˆŒ๋Ÿฌ๋ณด์ž.

๋ณต์‚ฌ ์•„์ด์ฝ˜์„ ๋ˆ„๋ฅด๋ฉด
์ƒ๊ธด๋‹ค.

Field name์€ title.OOO๋กœ ์ƒ์„ฑ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ ๋‹นํžˆ ๋ถ™์ด๋ฉด ๋œ๋‹ค. ๋‚˜๋Š” search๋กœ ์ƒ์„ฑํ–ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ๋˜๋ฉด Query๋ฌธ์„ ์ž‘์„ฑํ•  ๋•Œ title.search field์—์„œ ๋ญ๋ญ๋ฅผ ์ฐพ์•„์ค˜! ๋ผ๊ณ  ์š”์ฒญ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. Search-as-you-type์œผ๋กœ ์„ค์ •์„ ํ•ด์ฃผ๊ณ  Advanced Setting์—์„œ ๋˜‘๊ฐ™์ด analyzer๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‚˜๋Š” ์ปค์Šคํ…€์—์„œ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด๋‘” Whitespace_analyzer๋ฅผ ์„ ํƒํ•ด์ฃผ์—ˆ๋‹ค.

 

 

์ง ! ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋งคํ•‘ ๋์ด๋‹ค. Aliases๋Š” Component Templates์™€ ๊ฐ™์€ ์‚ฌ์œ ๋กœ ๋„˜์–ด๊ฐ€๋„๋ก ํ•˜๊ฒ ๋‹ค. ๋งˆ์ง€๋ง‰ ๋‹จ๊ณ„์—์„œ preview ํƒญ์„ ๋ณด๋ฉด ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ Setting๊ณผ Mapping์ด ์ด๋ฃจ์–ด์กŒ๋Š”์ง€ ํ™•์ธํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์ค‘์š”ํ•œ ์ ์€ logstash๋ฅผ ํ†ตํ•ด์„œ dbms์™€ ์—ฐ๋™ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด table ํ•˜๋‚˜ ๋‹น index ํ•˜๋‚˜์ด๋ฏ€๋กœ mapping์„ ํ•  ๋•Œ ํ•ด๋‹นํ•˜๋Š” ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์ฐฐ๋–ก๊ฐ™์ด ๋งž์ถฐ์ฃผ๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค. Field ์ด๋ฆ„๋„!!!!! 

์—ฌ๊ธฐ๊นŒ์ง€ ํ•˜๊ณ , ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ํฌ์ŠคํŒ…์€ Personal Home ํ”„๋กœ์ ํŠธ ์นดํ…Œ๊ณ ๋ฆฌ์— ์˜ฌ๋ ค๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค. 

 

+) ์ž˜๋ชป๋œ ์ ์ด๋‚˜ ๋น„ํšจ์œจ์ ์ด๋ผ๊ณ  ํŒ๋‹จ๋˜๋Š” ๋ถ€๋ถ„์€ ๋Œ“๊ธ€๋กœ ๊ฐ€๋ฅด์ณ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํžˆ ๋ฐฐ์šฐ๊ฒ ์Šต๋‹ˆ๋‹ค(_ _) ์ง„ํ–‰ ์ค‘ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ์…จ๋‹ค๋ฉด ๊ทธ๊ฒƒ๋„ ๋Œ“๊ธ€ ๋‚จ๊ฒจ์ฃผ์„ธ์š”! 

728x90
์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'๐Ÿฅ Web > โ” Back-end | etc.' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[etc] Logout ํ›„ ๋’ค๋กœ ๊ฐ€๊ธฐ ๋ฐฉ์ง€ - BF Cache  (0) 2024.02.23
[PostgreSQL] Windows ์™ธ๋ถ€ ์ ‘์† ํ—ˆ์šฉ ์„ค์ • ๋ฐ ์™ธ๋ถ€ ์ ‘์† ๋ฐฉ๋ฒ•  (1) 2023.11.03
[Elasticsearch] Index Template ๊ตฌ์„ฑํ•˜๊ธฐ with Kibana & Logstash (1) - Setting  (0) 2023.07.06
[Elasticsearch] Logstash๋ฅผ ํ†ตํ•ด PostgreSQL๊ณผ Elastic Stack ์—ฐ๋™ํ•˜๊ธฐ  (0) 2023.06.29
[Elasticsearch] Logstash ์‚ฌ์šฉํ•ด๋ณด๊ธฐ  (0) 2023.06.29
  1.  
  2. 1. ์˜ˆ์ œ ๋ฐ์ดํ„ฐ
  3. 2. Elasticsearch Mapping ๊ตฌ์„ฑํ•˜๊ธฐ
  4. 3. Elasticsearch Multi-Field(Search as you type)
'๐Ÿฅ Web/โ” Back-end | etc.' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [etc] Logout ํ›„ ๋’ค๋กœ ๊ฐ€๊ธฐ ๋ฐฉ์ง€ - BF Cache
  • [PostgreSQL] Windows ์™ธ๋ถ€ ์ ‘์† ํ—ˆ์šฉ ์„ค์ • ๋ฐ ์™ธ๋ถ€ ์ ‘์† ๋ฐฉ๋ฒ•
  • [Elasticsearch] Index Template ๊ตฌ์„ฑํ•˜๊ธฐ with Kibana & Logstash (1) - Setting
  • [Elasticsearch] Logstash๋ฅผ ํ†ตํ•ด PostgreSQL๊ณผ Elastic Stack ์—ฐ๋™ํ•˜๊ธฐ
darly213
darly213
ํ˜ธ๋ฝํ˜ธ๋ฝํ•˜์ง€ ์•Š์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜์–ด๋ณด์ž
  • darly213
    ERROR DENY
    darly213
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (97)
      • ๐Ÿฌ ML & Data (50)
        • ๐ŸŒŠ Computer Vision (2)
        • ๐Ÿ“ฎ Reinforcement Learning (12)
        • ๐Ÿ“˜ ๋…ผ๋ฌธ & ๋ชจ๋ธ ๋ฆฌ๋ทฐ (8)
        • ๐Ÿฆ„ ๋ผ์ดํŠธ ๋”ฅ๋Ÿฌ๋‹ (3)
        • โ” Q & etc. (5)
        • ๐ŸŽซ ๋ผ์ดํŠธ ๋จธ์‹ ๋Ÿฌ๋‹ (20)
      • ๐Ÿฅ Web (21)
        • โšก Back-end | FastAPI (2)
        • โ›… Back-end | Spring (5)
        • โ” Back-end | etc. (9)
        • ๐ŸŽจ Front-end (4)
      • ๐ŸŽผ Project (8)
        • ๐ŸงŠ Monitoring System (8)
      • ๐Ÿˆ Algorithm (0)
      • ๐Ÿ”ฎ CS (2)
      • ๐Ÿณ Docker & Kubernetes (3)
      • ๐ŸŒˆ DEEEEEBUG (2)
      • ๐ŸŒ  etc. (8)
      • ๐Ÿ˜ผ ์‚ฌ๋‹ด (1)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ๋ฐฉ๋ช…๋ก
    • GitHub
    • Notion
    • LinkedIn
  • ๋งํฌ

    • Github
    • Notion
  • ๊ณต์ง€์‚ฌํ•ญ

    • Contact ME!
  • 250x250
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
darly213
[Elasticsearch] Index Template ๊ตฌ์„ฑํ•˜๊ธฐ with Kibana & Logstash (2) - Mapping ๊ธฐ์ดˆ

๊ฐœ์ธ์ •๋ณด

  • ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ
  • ํฌ๋Ÿผ
  • ๋กœ๊ทธ์ธ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.