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
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.1k
え?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
300
What's new in Elastic Stack 6.1?
johtani
0
770
Other Decks in Programming
See All in Programming
JavaDoc 再入門
nagise
1
330
技術記事、AIに書かせるか、自分で書くか? 〜それでも私が自分の手で書く理由〜 / #QiitaConference
jnchito
2
1.4k
Inside Stream API
skrb
1
710
Lessons from Spec-Driven Development
simas
PRO
0
190
Vite+ Unified Toolchain for the Web
naokihaba
0
300
3Dシーンの圧縮
fadis
1
770
LLMによるContent Moderationの本番運用の裏側と品質担保への挑戦
suikabar
2
640
セキュリティの専門家じゃなくてもできる。「セキュリティ意識」をアップデートして サプライチェーン攻撃への耐性を高めよう。
tk3fftk
5
750
RTSPクライアントを自作してみた話
simotin13
0
600
コンテキストの使い捨てをやめる — ビジネスルール駆動開発と miko —
ioki
0
200
Webフレームワークの ベンチマークについて
yusukebe
0
160
ローカルLLMでどこまでコードが書けるか -拡張版 / How much code can be written on a local LLM Extended
kishida
10
4k
Featured
See All Featured
A Tale of Four Properties
chriscoyier
163
24k
What does AI have to do with Human Rights?
axbom
PRO
1
2.2k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.9k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Designing for humans not robots
tammielis
254
26k
Discover your Explorer Soul
emna__ayadi
2
1.1k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
160
The browser strikes back
jonoalderson
0
1.2k
Why Our Code Smells
bkeepers
PRO
340
58k
How Software Deployment tools have changed in the past 20 years
geshan
0
34k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
How to Think Like a Performance Engineer
csswizardry
28
2.6k
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༵ۚ