Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ElasticSearch入門
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Jun Ohtani
August 19, 2013
Programming
61k
10
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ElasticSearch入門
ElasticSearch
Jun Ohtani
August 19, 2013
More Decks by Jun Ohtani
See All by Jun Ohtani
Elastic Stackでマイクロサービス運用を 楽にするには? / Monitoring Microservices with Elastic Stack
johtani
5
3.1k
様々なメトリクスやログを集めてシステム解析 - Elastic Stackの入門と活用 - / Getting started Elastic Stack for logging/metrics
johtani
4
1.2k
え?SQLで入門?する ElasticsearchとElastic Stack / Getting started Elastic Stack with SQL
johtani
4
1.2k
Elastic Stack 入門 2018.09 / Getting started Elastic Stack 2018.09
johtani
3
3k
What's new in Elastic Stack 6.3
johtani
2
2.4k
Elastic Stackで始めるJavaアプリのパフォーマンス監視 / Intro Elastic Stack and Elastic APM Java
johtani
5
2.6k
様々なメトリクスやログを集めてシステム解析 - Elastic Stackの入門と活用 - / Intro Elastic Stack
johtani
0
190
Intro Elastic Stack at Telemetry WG
johtani
0
310
What's new in Elastic Stack 6.1?
johtani
0
790
Other Decks in Programming
See All in Programming
React本体のコードリーディング
high_g_engineer
1
130
Built Our Own Background Agent at LayerX #aidevex_findy
layerx
PRO
9
4.6k
メールのエイリアス機能を履き違えない
isshinfunada
0
210
PHPだって関数型したい 〜できること、できないこと〜 / fp-in-php
jsoizo
1
270
PHP に部分適用が来るぞ!……ところで何それ?おいしいの? #phpcon / phpcon-2026
shogogg
0
510
アルゴリズムは何を圧縮しているのか ─ Haskell から育った「圧縮代数」というメンタルモデル
naoya
16
3.8k
AI時代に設計が 最大の生産性レバーになる 意図駆動開発とデータを消さない設計|Don't Delete Your Data or Your Intent — Design as the Deepest Lever in the AI Era
tomohisa
1
500
ソフトウェア設計に溶けるインフラ ― AWS CDK のインフラ認識論
konokenj
3
740
全PRの83%がAIレビューだけでマージできるようになった開発組織はその後どうなったか
athug
1
1.3k
【やさしく解説 設計編・中級 #4】ルールの寿命と、システムの年輪
panda728
PRO
2
180
Welcome to the "Parametricity" 🏙️ − Generic だけど Specific な世界 −
guvalif
PRO
1
200
20260722_microCMSで考える、AI時代のコンテンツ運用設計
yosh1
0
250
Featured
See All Featured
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
119
120k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
Done Done
chrislema
186
16k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
270
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
330
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
660
Embracing the Ebb and Flow
colly
88
5.1k
Optimising Largest Contentful Paint
csswizardry
37
3.9k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
340
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
750
Transcript
ElasticSearchೖ 2013/08/29 @johtani 138݄30༵ۚ
ࣗݾհ ࢯ໊ɿେ୩ɹ७ Twitterɿ@johtani lucene-gosenͷίϛολʔ Solrೖஶऀͷ1ਓ ϒϩάɿhttp://blog.johtani.info ॴଐɿגࣜձࣾγʔϚʔΫ 138݄30༵ۚ
ΞδΣϯμ ݕࡧΤϯδϯͬͯʁ సஔΠϯσοΫεɺN-gramɺܗଶૉͷ ElasticSearchͱʁ ΠϯσοΫεͷཧߏͱཧߏ ػೳ֓ཁ ࢀߟࢿྉͳͲ 138݄30༵ۚ
ݕࡧΤϯδϯͬͯʁ ʢElasticSearchͱؔͷͳ͍֓ཁతͳʣ 138݄30༵ۚ
શจݕࡧͬͯʁ શจݕࡧʢFull text searchʣͱɺίϯϐϡʔλʹ͓͍ͯɺෳͷจॻʢϑΝΠ ϧʣ͔ΒಛఆͷจࣈྻΛݕࡧ͢Δ͜ͱɻʮϑΝΠϧ໊ݕࡧʯʮ୯ҰϑΝΠϧ ͷจࣈྻݕࡧʯͱҟͳΓɺʮෳจॻʹ·͕ͨͬͯɺจॻʹؚ·ΕΔશจΛ ରͱͨ͠ݕࡧʯͱ͍͏ҙຯͰ༻͞ΕΔɻ ʢWikipediaΑΓʣ 138݄30༵ۚ
༻ޠ จॻʢυΩϡϝϯτʣ ɹݕࡧΤϯδϯʹอଘ͞ΕͨσʔλɻRDBͰͷϨίʔυʹ૬ ΫΤϦ ɹݕࡧ݅ɺݕࡧࣜ εΩʔϚ ɹRDBͷςʔϒϧʹ૬ ϑΟʔϧυ ɹRDBͷΧϥϜʹ૬ λʔϜʢTermʣ/τʔΫϯʢTokenʣ
ɹΠϯσοΫεͷΩʔʹͳΔ୯ޠʢจࣈྻʣ 138݄30༵ۚ
υΩϡϝϯτొͷྲྀΕ 1 2 ΧπΦαβΤͷఋ αβΤϫΧϝͷ࢞ υΩϡϝϯτͷొ 138݄30༵ۚ
υΩϡϝϯτొͷྲྀΕ 1 2 ΧπΦαβΤͷఋ αβΤϫΧϝͷ࢞ 1 2 ΧπΦ αβΤ
ͷ ͷ αβΤ ϫΧϝ ఋ ࢞ υΩϡϝϯτͷొ ୯ޠʹׂ 138݄30༵ۚ
υΩϡϝϯτొͷྲྀΕ 1 2 ΧπΦαβΤͷఋ αβΤϫΧϝͷ࢞ 1 2 ΧπΦ αβΤ
ͷ ͷ αβΤ ϫΧϝ ఋ ࢞ ΧπΦ αβΤ 1 1 2 ͷ ࢞ ϫΧϝ 2 1 2 1 2 1 ఋ 2 υΩϡϝϯτͷొ ୯ޠʹׂ ୯ޠ͔Βidͷྻ͕ Ҿ͚ΔΑ͏ʹ ʹసஔΠϯσοΫε 138݄30༵ۚ
ݕࡧͷྲྀΕ ΧπΦɹαβΤ ΧπΦ αβΤ 1 1 2 ͷ ࢞
ϫΧϝ 2 1 2 1 2 1 ఋ 2 ݕࡧจࣈೖྗ 138݄30༵ۚ
ݕࡧͷྲྀΕ ΧπΦɹαβΤ ΧπΦ αβΤ ΧπΦ αβΤ 1 1 2
ͷ ࢞ ϫΧϝ 2 1 2 1 2 1 ఋ 2 AND ݕࡧจࣈೖྗ ݕࡧจࣈͷύʔε ʴݕࡧΫΤϦԽ 138݄30༵ۚ
ݕࡧͷྲྀΕ ΧπΦɹαβΤ ΧπΦ αβΤ ΧπΦ αβΤ 1 1 2
ͷ ࢞ ϫΧϝ 2 1 2 1 2 1 ఋ 2 AND ݕࡧจࣈೖྗ ݕࡧจࣈͷύʔε ʴݕࡧΫΤϦԽ సஔΠϯσοΫεΛݕࡧ 138݄30༵ۚ
ݕࡧͷྲྀΕ ΧπΦɹαβΤ ΧπΦ αβΤ ΧπΦ αβΤ 1 1 2
ͷ ࢞ ϫΧϝ 2 1 2 1 2 1 ఋ 2 AND ݕࡧจࣈೖྗ ݕࡧจࣈͷύʔε ʴݕࡧΫΤϦԽ సஔΠϯσοΫεΛݕࡧ ˠANDݕࡧͳͷͰidͷ ྻͷANDΛͱΔ 138݄30༵ۚ
ݕࡧͷྲྀΕ ΧπΦɹαβΤ ΧπΦ αβΤ ΧπΦ αβΤ 1 1 2
ͷ ࢞ ϫΧϝ 2 1 2 1 2 1 ఋ 2 AND ݕࡧจࣈೖྗ ݕࡧจࣈͷύʔε ʴݕࡧΫΤϦԽ సஔΠϯσοΫεΛݕࡧ ˠANDݕࡧͳͷͰidͷ ྻͷANDΛͱΔ 138݄30༵ۚ
N-gramͱܗଶૉղੳ సஔΠϯσοΫεͷΩʔʢ୯ޠʣͷ࡞Γํ ຊޠ୯ޠͷΕ͕Θ͔Βͳ͍ͷͰసஔΠϯσοΫεͷΩʔओʹͭ͗ͷ2 ͭͷख๏Ͱ࡞Δ N-gram Nʢ1Ҏ্ͷࣈʣจࣈͣͭจষΛ۠Δ ܗଶૉղੳ ࣙॻͳͲΛ༻͍ͯҙຯͷ͋Δ୯ޠͰ۠Δ 138݄30༵ۚ
N-gram N͕2ͷ࣌ͷྫɿ ϝϦοτɿ ݕࡧ࿙Ε͕ͳ͍ σϝϦοτɿ ਫ਼͕ѱ͍→ʮΧπʯͰώοτͪ͠Ό͏ ΠϯσοΫε͕ංେԽ ޠװʢ୯ޠͷجຊܗͱ͔ʣͰݕࡧෆՄ ΧπΦαβΤͷఋ Χπ
πΦ Φ α αβ βΤ Τͷ ͷఋ 138݄30༵ۚ
ܗଶૉղੳ ܗଶૉղੳͷྫɿ ϝϦοτɿ ਫ਼͕Α͍ɿʮΧπʯͰݕࡧ→ʮΧπΦʯώοτ͠ͳ͍ ޠװʹΑΔݕࡧ͕ՄೳɿʮҿΈʯ→ʮҿΉʯ͕ݕࡧՄ σϝϦοτɿ ৽ޠʢະޠʣʹऑ͍→ࣙॻϕʔεͷ߹ʹࣙॻʹͳ͍୯ޠ͕Θ͔Βͳ͍ɻࣙॻ ߋ৽ޙΠϯσοΫε࠶࡞ ΧπΦαβΤͷఋ ΧπΦ
ͷ αβΤ ఋ 138݄30༵ۚ
υΩϡϝϯτͱϑΟʔϧυ υΩϡϝϯτෳͷϑΟʔϧυ͔Βߏ͞ΕΔ ϑΟʔϧυ୯ҐͰసஔΠϯσοΫεΛ࡞ ϑΟʔϧυ୯ҐͰݕࡧ͕Մೳʹ 138݄30༵ۚ
ElasticSearchͱʁ 138݄30༵ۚ
ຊͷཁ 138݄30༵ۚ
ࠓ͜Ε͚֮ͩ͑ͯؼͬ ͍ͯͩ͘͞ɻ 138݄30༵ۚ
ElasticSearch Amazon Web Servicesͷ αʔϏεͱؔ͋Γ·ͤΜ 138݄30༵ۚ
Ҏ্ 138݄30༵ۚ
ElasticSearchͱʁ ࢄܕRESTfulݕࡧˍղੳαʔό OSSʢApache Software License Version 2.0ʣ Apache LuceneΛίΞʹ࠾༻ʢ0.90.3Lucene 4.4.0ʹରԠʣ
ϚϧνςφϯτରԠ εΩʔϚϑϦʔˍυΩϡϝϯτࢦ ָ؍తഉଞ੍ޚ ͳͲͳͲ 138݄30༵ۚ
ElasticSearchͷ ΠϯσοΫεߏ ʢཧͱཧʣ 138݄30༵ۚ
ΠϯσοΫεߏʢཧʣ ʮΠϯσοΫε/λΠϓʢϚοϐϯάλΠϓʣ/υΩϡϝϯτʯͱ͍͏ߏ ※SolrʹλΠϓͱ͍͏֓೦͕ͳ͍ ElasticSearch indexɿbooks typeɿ novel typeɿ magazine doc1
doc2 doc3 indexɿdvds 138݄30༵ۚ
ΠϯσοΫεߏʢཧʣ υΩϡϝϯτ ɹɹɿRDBͷߦʹ૬͢Δ֓೦ɻ ɹɹɹߏ͕ݻఆͰͳ͍ʹεΩʔϚϑϦʔʢεΩʔϚΛఆٛ͢Δ͜ͱՄೳʣ λΠϓʢϚοϐϯάλΠϓʣ ɹɹɿRDBͷςʔϒϧʹ૬͢Δ֓೦ɻ ɹɹɹυΩϡϝϯτΛ·ͱΊΔίϯςφతͳͷɻ ɹɹɹλΠϓຖʹεΩʔϚʢESͰϚοϐϯάͱ͍͏ʣΛఆٛՄೳ ΠϯσοΫε ɹɹɿRDBͷσʔλϕʔεʹ૬͢Δ֓೦ɻ
ɹɹɹཧతͳϑΝΠϧʹอଘ͞ΕΔ୯Ґ ɹɹʢλΠϓ͋͘·Ͱ֓೦తͳͷͰɺ ɹɹɹཧతʹΠϯσοΫεͷ୯ҐͰอଘɻ※ཧߏޙड़ʣ 138݄30༵ۚ
ΠϯσοΫεߏʢཧʣ ElasticSearchͰཧߏ͕URLͱಉ͡ߏ υΩϡϝϯτͷొ curl -XPUT http://localhost:9200/books/novel/doc1 -d ‘{...}’ υΩϡϝϯτͷݕࡧʢΠϯσοΫε୯Ґʣ curl
-XGET http://localhost:9200/books/_search?q=... υΩϡϝϯτͷݕࡧʢλΠϓ୯Ґʣ curl -XGET http://localhost:9200/books/novel/_search?q=... υΩϡϝϯτͷIDʹΑΔऔಘʢυΩϡϝϯτ୯Ґʣ curl -XGET http://localhost:9200/books/novel/doc1 138݄30༵ۚ
ΠϯσοΫεߏʢཧʣ ෳͷΠϯσοΫεΛԣஅతʹݕࡧՄೳʢΧϯϚ۠ΓͰOKʣ curl -XGET http://localhost:9200/books,dvds/_search?q=... શΠϯσοΫεΛԣஅݕࡧ͢Δʹ curl -XGET http://localhost:9200/_search?q=... શΠϯσοΫεͷλΠϓࢦఆͰͷݕࡧՄೳ
curl -XGET http://localhost:9200/_all/magazine/_search?q=... 138݄30༵ۚ
ΠϯσοΫεߏʢཧʣ 138݄30༵ۚ
Ϋϥελɿelasticsearch ΠϯσοΫεߏʢཧʣ ΫϥελͱϊʔυɺΠϯσοΫεͱγϟʔυʢshardʣͷؔ ϊʔυɿElasticSearchϓϩηε̍ ϊʔυɿElasticSearchϓϩηε̎ booksɿprimary shard1 dvdsɿreplica shard1 dvdsɿreplica
shard2 booksɿreplica shard2 dvdsɿprimary shard1 booksɿreplica shard1 dvdsɿprimary shard2 booksɿprimary shard2 138݄30༵ۚ
ΠϯσοΫεߏʢཧʣ Ϋϥελnݸͷϊʔυ͔Βߏʢcluster.name͕ಉҰͳΒಉҰΫϥελʣ ΠϯσοΫεnݸͷγϟʔυ͔Βߏ͞Εɺγϟʔυ୯ҐͰϊʔυʹஔ͞Ε Δ͜ͱͰࢄՄೳ γϟʔυ୯ҐͰϨϓϦΧΛอ࣋Մೳ σϑΥϧτͰɺ5γϟʔυɺ1ϨϓϦΧʢ/1γϟʔυʣ ※γϟʔυΠϯσοΫε࡞࣌ʹͷΈࢦఆ͕ՄೳɻϨϓϦΧมߋՄೳ γϟʔυׂػೳ͕ͳ͍ͨΊɻSolrshard splittingػೳ͋Γʢ2013/04ʣ ※ಉҰϓϩηε্ʹಉҰγϟʔυͷϨϓϦΧͱϓϥΠϚϦ͕Βͳ͍Α͏ʹͳͬ
͍ͯΔ 138݄30༵ۚ
Ϋϥελཧ ΫϥελͷϊʔυՃͳͲͷϊʔυ୳ࡧσϑΥϧτZen Discovery ϚϧνΩϟετorϢχΩϟετʹΑΔϊʔυ୳ࡧ ϚϧνΩϟετɿϚϧνΩϟετΛར༻ͨ͠ϊʔυ୳ࡧ͓ΑͼΫϥελߏங ϢχΩϟετɿϗετϦετΛར༻ͨ͠Ϋϥελͷߏங ΫϥελىಈޙʹϚελʔϊʔυΛબग़ʢϚϧνϚελ͕Մೳʣ Ϛελϊʔυ͕ΫϥελશମͷোݕΛ࣮ࢪ http://www.elasticsearch.org/guide/reference/modules/discovery/zen/ ※ZooKeeperΛ༻͍ͨϊʔυ୳ࡧͷϓϥάΠϯ͋Δ
138݄30༵ۚ
ػೳ֓ཁ 138݄30༵ۚ
ػೳ֓ཁ ઃఆؔ࿈ ܕͷࣗಈܾఆɺಈతϚοϐϯάɺςϯϓϨʔτͳͲ σʔλߏ ೖΕࢠɺࢠߏɺ෦ߋ৽ ศརػೳ TTLɺεϩʔΫΤϦϩάɺεϩʔΠϯσΫγϯάϩάɺϓϥάΠϯ ݕࡧɺొػೳ Geoɺ PercoratorɺόϧΫΠϯαʔτ
138݄30༵ۚ
ઃఆؔ࿈ 138݄30༵ۚ
ઃఆؔ࿈ʢجຊʣ ΄ͱΜͲͯ͢ͷઃఆʹ͍ͭͯɺREST APIͰઃఆ͕Մೳ ઃఆϑΝΠϧͱͯ͠อଘՄೳ ֬ೝREST APIͰՄೳ Ϋϥελͷঢ়ଶͳͲ ΠϯσοΫεͷ࡞ɺআ curl -XPUT
'http://localhost:9200/twitter/' curl -XDELETE 'http://localhost:9200/twitter/' curl -XGET 'http://localhost:9200/_cluster/health?pretty=true' 138݄30༵ۚ
ઃఆؔ࿈ʢܕͷܾఆػೳʣ JSONΦϒδΣΫτ͔ΒࣗಈͰϑΟʔϧυͷܕΛਪଌͯ͠ొՄೳ ʢεΩʔϚϑϦʔͱݺΕΔॴҎʣ ɺɺจࣈྻͳͲΛਪଌͯ͠ϑΟʔϧυΛܾఆ ɿ numeric_detectionʹtrue/falseΛઃఆ ɿdynamic_date_formatsɿjoda-timeϥΠϒϥϦͷϑΥʔϚοτจ ࣈྻΛࢦఆʢෳࢦఆՄʣ 138݄30༵ۚ
ܕͷࣗಈܾఆͷҙ ҙ ͢ͰʹܕΛܾఆͨ͠ϑΟʔϧυʹҟͳΔܕͷσʔλΛ͍ΕΔͱΤϥʔʹͳͬ ͨΓɺΓࣺͯΒΕͨΓ Τϥʔྫɿ24ʢlongܕʣΛొޙɺ”hoge”ʢstringܕʣΛొ ignore_malformed͕trueͰઃఆ͞Ε͍ͯΕΤϥʔʹͳΒͳ͍ ΤϥʔʹͳΒͳ͍ྫɿ24ʢlongܕʣΛొޙɺ12.3ʢfloatܕʣΛొ σϑΥϧτͰখҎԼ͕ΓࣺͯΒΕͯ12Ͱొ͞Εͯ͠·͏ 138݄30༵ۚ
ઃఆؔ࿈ʢಈతϚοϐϯάʣ ϑΟʔϧυ໊ͳͲʹΑΔϑΟʔϧυܕͷਪఆΛઃఆՄೳ SolrͷμΠφϛοΫϑΟʔϧυͷΑΓॊೈͳػೳ mappingsఆٛʹdynamic_templatesͷઃఆΛྻͰՃ { "person" : { "dynamic_templates" :
[ { "template_1" : { "match" : "multi*", "mapping" : { "type" : "multi_field", "fields" : { "{name}" : {"type": "{dynamic_type}", "index" : "analyzed"}, "org" : {"type": "{dynamic_type}", "index" : "not_analyzed"} } } } },... 138݄30༵ۚ
ઃఆؔ࿈ʢςϯϓϨʔτʣ ΠϯσοΫε୯ҐͷઃఆςϯϓϨʔτԽՄೳ ΠϯσοΫε໊ʹtemplate͕Ұகͨ͠ͷΛద༻ɻorderͷେ͖͍ͷͰ্ॻ͖ ྫɿجຊઃఆϨϓϦΧ0͕ͩɺha_Ͱ͡·ΔΠϯσοΫεϨϓϦΧ5 curl -XPUT localhost:9200/_template/main_template -d ' {
"template" : "*", "order" : "1", "settings" : { "index.number_of_replicas" : 0 } } curl -XPUT localhost:9200/_template/ha_template -d ' { "template" : "ha_*", "order" : "10", "settings" : { "index.number_of_replicas" : 5 } } 138݄30༵ۚ
σʔλߏ 138݄30༵ۚ
σʔλߏʢωετʣ ωετɺࢠɺΦϒδΣΫτͳͲͷσʔλొՄೳ ʢSolrجຊϑϥοτͳσʔλͷΈʣ ྫɿTγϟπͷ৭ͱαΠζͷΈ߹Θͤʢωετʣ { "variation" : [ { "color"
: "blue", "size" : 4 }, { "name" : "green", "size" : 6 } ] } { "query" : { "nested" : { "path" : "variation", "query" : { "bool" : { "must" : [ { "term" : {"variation.name" : "green"} }, { "term" : {"variation.size" : "6"} } ] } } } } } ΫΤϦ σʔλ 138݄30༵ۚ
σʔλߏʢࢠʣ ࢠؔʹؔ͢ΔݕࡧՄೳʢmappingͰઃఆඞཁʣ ࢠσʔλొ࣌ʹIDΛࢦఆ $ curl -XPUT localhost:9200/shop/variation/1?parent=1 -d '{ "color"
: "red", "size" : "XL" }' ࢠσʔλ $ curl -XPUT localhost:9200/shop/cloth/1 -d '{ "name" : "something" }' σʔλ $ curl -XPUT localhost:9200/shop/variation/2?parent=1 -d '{ "color" : "green", "size" : "S" }' ࢠσʔλ { "has_child" : { "type" : "variation", "query" : { "bool" : { "must" : [ { "term": {"size" : "XL"} }, { "term": {"color" : "red"} } ] } } } } ΫΤϦ 138݄30༵ۚ
σʔλߏʢ෦ߋ৽ʣ _sourceϑΟʔϧυʹσϑΥϧτͰೖྗ͞ΕͨJSONͷσʔλΛอ࣋ ʢSolrʹͳ͍ʣ _sourceϑΟʔϧυΛ༻͢Δ෦ߋ৽͕Մೳ curl -XPOST 'localhost:9200/test/type1/1/_update' -d '{ "script"
: "ctx._source.counter += count", "params" : { "count" : 4 } }' 138݄30༵ۚ
ศརػೳʢTTLʣ TTLʹTime To Live σʔλͷੜଘظؒΛࢦఆՄೳʢྫ1ʣ ExpireͷνΣοΫॲཧ60sຖʹߦΘΕΔʢมߋՄʣ { "tweet" : {
"_ttl" : { "enabled" : true, "default" : "1d" } } } mapping 138݄30༵ۚ
ศརػೳʢϩάʣ index slow log/search slow logʢSolrʹͳ͍ػೳʣ ΠϯσοΫε࣌ɺݕࡧ࣌ʹॲཧ͕͖͍࣌ؒ͠Λ͑ͨΒϩάग़ྗ ϩάϨϕϧ͝ͱʹΛઃఆՄೳ #index.search.slowlog.threshold.query.warn: 10s
#index.search.slowlog.threshold.query.info: 5s #index.search.slowlog.threshold.query.debug: 2s #index.search.slowlog.threshold.query.trace: 500ms #index.search.slowlog.threshold.fetch.warn: 1s #index.search.slowlog.threshold.fetch.info: 800ms #index.search.slowlog.threshold.fetch.debug: 500ms #index.search.slowlog.threshold.fetch.trace: 200ms 138݄30༵ۚ
ศརػೳʢϓϥάΠϯʣ ElasticSearchͷ֦ுػೳ RiverɿσʔλΛElasticSearchʹྲྀ͠ࠐΉϓϥάΠϯʢྫɿRabbitMQͱ͔ʣ AnalysisɿΞφϥΠβͷϓϥάΠϯʢྫɿKuromojiͱ͔ʣ SiteɿΫϥελཧͱ͔ ϓϥάΠϯͷΠϯετʔϧଐͷpluginίϚϯυʹͯՄೳ ʢ௨ৗωοτʹଓ͍ͯ͠Δඞཁ͕͋Δʣ ϓϥάΠϯͷҰཡʢhttp://www.elasticsearch.org/guide/reference/modules/ plugins/ʣ 138݄30༵ۚ
ݕࡧػೳʢPercoratorʣ ΫΤϦΛΠϯσοΫεԽͯ͠ొ ొࡁΈͷΫΤϦʹώοτ͢Δσʔλ͔Ͳ͏͔ΛಛఆͷϦΫΤετʹσʔλ Λૹ৴͢Δ͜ͱͰΘ͔ΔΈʢར༻ՄೳͳΫΤϦҰ෦੍ݶ͋Γʣ curl -XPUT localhost:9200/_percolator/test/kuku -d '{ "query"
: { "term" : { "field1" : "value1" } } } curl -XGET localhost:9200/test/type1/_percolate -d '{ "doc" : { "field1" : "value1" } }' And the matches are part of the response: {"ok":true, "matches":["kuku"]} percoratorͷొ percoratorͷ֬ೝ 138݄30༵ۚ
ݕࡧػೳʢGeoʣ ҢܦσʔλΛར༻ͨ͠ݕࡧ Ңܦɺgeohashɺgeo_shapeͳͲ த৺͔ΒͷڑɺۣܗɺgeohashʹΑΔߜࠐͳͲ͕Մೳ ڑʹΑΔϑΝηοτ 138݄30༵ۚ
ొػೳʢόϧΫॲཧʣ େྔͷॲཧΛߦ͏ͨΊͷAPIʢ_bulkʣ http://www.elasticsearch.org/guide/reference/api/bulk/ UDPར༻Մೳ { "index" : { "_index" :
"test", "_type" : "type1", "_id" : "1" } } { "field1" : "value1" } { "delete" : { "_index" : "test", "_type" : "type1", "_id" : "2" } } { "create" : { "_index" : "test", "_type" : "type1", "_id" : "3" } } { "field1" : "value3" } { "update" : {"_id" : "1", "_type" : "type1", "_index" : "index1"} } { "doc" : {"field2" : "value2"} } όϧΫॲཧσʔλྫ 138݄30༵ۚ
ͦͷଞʢؔ࿈πʔϧͱ͔ʣ Kibana3ʴElasticSearchʴ(logstash OR fluentd) ElasticSearchΛετϨʔδʹͯ͠ϩάσʔλͷอଘͱՄࢹԽΛߦ͏ 138݄30༵ۚ
ࢀߟࢿྉͳͲ 138݄30༵ۚ
ࢀߟϖʔδ ຊՈˍΨΠυ http://www.elasticsearch.org http://www.elasticsearch.org/guide/ αϙʔτˍτϨʔχϯά http://elasticsearch.com Solr vs ElasticSearchͷຊޠ༁൛ https://github.com/minghai/ElasticSearch_VS_Solr
Sematextͷϒϩά http://blog.sematext.com 138݄30༵ۚ
ࢀߟॻ੶ͱ͔ ElasticSearch ServerʢPackt Publishingɺ2013/02݄ൃചʣ http://www.packtpub.com/elasticsearch-server-for-fast-scalable-flexible- search-solution/book http://elasticsearchserverbook.com Mastering ElasticSearchʢPackt Publishingɺ2013/12ൃച༧ఆʣ
http://www.packtpub.com/mastering-elasticsearch-querying-and-data- handling/book Elasticsearch in ActionʢManning Publicationsɺ2014/य़ɺMEAPߪೖՄʣ http://www.manning.com/hinman/ 138݄30༵ۚ
͓·͚ 138݄30༵ۚ
LuceneͱESͷόʔδϣϯ ElasticSearch Lucene 0.90.3 4.4 0.90.2 4.3.1 0.90.1 4.3 0.90.0
4.2.1 0.90.0rc2 4.2.1 0.90.0rc1 4.2 0.20.6 3.6.2 0.20.5 3.6.2 0.90.0 beta1 4.1 138݄30༵ۚ