Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
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.6k
Elastic Stackで始めるJavaアプリのパフォーマンス監視 / Intro Elastic Stack and Elastic APM Java
johtani
5
2.7k
様々なメトリクスやログを集めてシステム解析 - Elastic Stackの入門と活用 - / Intro Elastic Stack
johtani
0
200
Intro Elastic Stack at Telemetry WG
johtani
0
320
What's new in Elastic Stack 6.1?
johtani
0
800
Other Decks in Programming
See All in Programming
アクセシビリティから考える情報設計
high_g_engineer
0
350
不幸な GC
chencmd
0
900
Omarchy Tokyo やると聞いて UMPC 買ってセットアップしてきた
mtsmfm
0
130
App Intentsのビルドプロセスを支える技術
kntkymt
0
190
まだ間に合う!今年の夏こそSchemeのマクロ展開器を完全理解!
omasanori
0
650
XHTMLが残したもの
yosuke_furukawa
PRO
2
640
Security issues being discussed on Web Platforms
petamoriken
0
520
マイコン向けの軽量Ruby「PicoRuby」で各種デバイスを制御するネイティブアプリの実現手法
bash0c7
0
320
AI時代に学ぶ 好きなルール 嫌いなルール Linter編
shorty5121
0
910
Swift愛好会100回記念 第1回を振り返る
jollyjoester
0
120
[DroidKaigi 2026] Bring your own phones to Gradle Managed Devices
f2lk
0
110
巨大モノリシックアプリ モダン化大作戦
ktcryomm
0
460
Featured
See All Featured
Building Adaptive Systems
keathley
44
3.2k
Everyday Curiosity
cassininazir
0
310
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
730
How Software Deployment tools have changed in the past 20 years
geshan
1
34k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
660
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
420
How GitHub (no longer) Works
holman
316
150k
Google's AI Overviews - The New Search
badams
0
1.6k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
500
Agile that works and the tools we love
rasmusluckow
331
22k
How to Talk to Developers About Accessibility
jct
2
540
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༵ۚ