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.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
780
Other Decks in Programming
See All in Programming
LLM本来の能力を解き放つサンドボックス技術とAI民主化への適用
yukukotani
3
4.9k
任せる範囲はこう広がった / How the Scope of AI Delegation Has Expanded
nrslib
1
240
TSKaigi Night Talks 2026_TypeScriptでサプライチェーンの整合性を型に閉じ込める
geekplus_tech
0
440
AI がコードを書く時代における新卒エンジニアの仕事風景 (2026) / New Graduate Engineers in the Era of AI Coding (2026)
sushichan044
0
200
ECSアプリログをFireLensでコスト削減しようとしたけど諦めた話 in Fargate×Node.js
akihisaikeda
2
4.2k
エンジニア向け会社紹介/Findy Company Profile
findyinc
6
360k
Hunting Vulnerabilities in Symfony with LLMs
vinceamstoutz
0
580
使用 Meilisearch 建立新聞搜尋工具
johnroyer
0
110
【やさしく解説 設計編 #0】DDDのコード、読めるのに分からない人へ
panda728
PRO
2
240
IBM Bobを活用したレガシーアプリの最新化
oniak3ibm
PRO
1
240
えっ!!コードを読まずに開発を!?
hananouchi
0
160
Dataformのリポジトリを立ち上げるときにまずやること / dataform-day0-2026
snhryt
0
210
Featured
See All Featured
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
760
Faster Mobile Websites
deanohume
310
32k
Ruling the World: When Life Gets Gamed
codingconduct
0
280
Large-scale JavaScript Application Architecture
addyosmani
515
110k
How to Think Like a Performance Engineer
csswizardry
28
2.7k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.8k
エンジニアに許された特別な時間の終わり
watany
107
250k
Music & Morning Musume
bryan
47
7.3k
YesSQL, Process and Tooling at Scale
rocio
174
15k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
The World Runs on Bad Software
bkeepers
PRO
72
12k
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༵ۚ