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
Domingo Suarez Torres
April 27, 2016
Programming
0
86
Elasticsearch
Elasticsearch introduction at the Mexico City JVM Group.
Domingo Suarez Torres
April 27, 2016
Tweet
Share
More Decks by Domingo Suarez Torres
See All by Domingo Suarez Torres
Orquestación de contenedores con Kubernetes SGNext
domix
0
110
JVM Reactive Programming
domix
0
39
#SGNext Massive storage in the Mexican banking industry
domix
0
57
Ratpack JVM_MX Meetup February 2016
domix
0
58
Other Decks in Programming
See All in Programming
Deep Dive into Kotlin Flow
jmatsu
1
350
print("Hello, World")
eddie
2
530
Amazon RDS 向けに提供されている MCP Server と仕組みを調べてみた/jawsug-okayama-2025-aurora-mcp
takahashiikki
1
110
Namespace and Its Future
tagomoris
6
700
Improving my own Ruby thereafter
sisshiki1969
1
160
AIと私たちの学習の変化を考える - Claude Codeの学習モードを例に
azukiazusa1
10
4.2k
Updates on MLS on Ruby (and maybe more)
sylph01
1
180
チームのテスト力を鍛える
goyoki
3
170
AIコーディングAgentとの向き合い方
eycjur
0
270
今だからこそ入門する Server-Sent Events (SSE)
nearme_tech
PRO
3
230
Android 16 × Jetpack Composeで縦書きテキストエディタを作ろう / Vertical Text Editor with Compose on Android 16
cc4966
2
230
知っているようで知らない"rails new"の世界 / The World of "rails new" You Think You Know but Don't
luccafort
PRO
1
160
Featured
See All Featured
Become a Pro
speakerdeck
PRO
29
5.5k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
33
2.4k
jQuery: Nuts, Bolts and Bling
dougneiner
64
7.9k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
36
2.5k
How to Think Like a Performance Engineer
csswizardry
26
1.9k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.5k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.9k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
112
20k
A Modern Web Designer's Workflow
chriscoyier
696
190k
Designing Experiences People Love
moore
142
24k
Transcript
Elasticsearch Mexico City JVM Group April 2016
!Gracias por estar aqui¡
¡El meetup con mas asistencia de la historia!
What is the topic tonight?
Elastic search?
NO
Elastic Search?
NO
ElasticSearch?
NO
@superserch?
NO
Elasticsearch
YES
Search
Do I have to elaborate why search is important?
A little history…
Lucene History • Douglass Read "Doug" Cutting wrote Lucene in
1999 • Doug also is the author of Hadoop • In Lucene other projects came to life • Mahout • Tika • Nutch
Lucene?
• Lucene is an open-source Java full-text search library which
makes it easy to add search functionality to an application or website.
Index
Query
Inverted index • Lucene creates a data structure where it
keeps a list of where each word belongs.
Lucene-Based projects • Solr • Compass • Elasticsearch • Hibernate
search
Elasticsearch You Know, for Search.
Features • Real-Time Data. I (Domingo) say near Real-Time Data.
• Massively Distributed • High Availability • Full-Text Search • Document-Oriented • Schema-Free • Developer-Friendly, RESTful API • Extensible via plugins
Concepts • Cluster • Node • Index • Shard &
Replica • Type • Mapping • Document
How data is organized in Elasticsearch
Nodes & shards
Indexing documents
Sharding is crucial • Shard is a physical Lucene index
• # documents in a Lucent index is 2 billion docs. • When you create a index you have to declare the # shards, you can’t change later. Beware! • Don’t try to over-sharding your index! Beware!
Distributed indexing
URL http://localhost:9200/{index}/{type}/{document_id}
HTTPie for the samples
Creating an index $ http put :9200/my_index/ settings:='{ "index" :
{ "number_of_shards" : 3, "number_of_replicas" : 0 } }' PUT /my_index/ HTTP/1.1 Accept: application/json Accept-Encoding: gzip, deflate Connection: keep-alive Content-Length: 73 Content-Type: application/json Host: localhost:9200 User-Agent: HTTPie/0.9.3 { "settings": { "index": { "number_of_replicas": 0, "number_of_shards": 3 } } } HTTP/1.1 200 OK Content-Length: 21 Content-Type: application/json; charset=UTF-8 { "acknowledged": true }
Creating a type $ http put :9200/my_index/_mapping/my_document properties:='{ "user_name": {
"type": "string" } }' -v PUT /my_index/_mapping/my_document1 HTTP/1.1 Accept: application/json Content-Length: 49 Content-Type: application/json { "properties": { "user_name": { "type": "string" } } } HTTP/1.1 200 OK Content-Length: 21 Content-Type: application/json; charset=UTF-8 { "acknowledged": true }
Indexing $ http :9200/my_index/my_document user_name="Domingo Suarez" -v POST /my_index/my_document1 HTTP/1.1
Content-Length: 31 Content-Type: application/json { "user_name": "Domingo Suarez” } HTTP/1.1 201 Created Content-Length: 149 Content-Type: application/json; charset=UTF-8 { "_id": "AVRaEeBK3Lbw2oDzSIWN", "_index": "my_index", "_shards": { "failed": 0, "successful": 1, "total": 1 }, "_type": "my_document1", "_version": 1, "created": true }
Search $ http :9200/my_index/my_document/_search?q=user_name:Domingo HTTP/1.1 200 OK Content-Length: 657 Content-Type:
application/json; charset=UTF-8 { "_shards": { "failed": 0, "successful": 3, "total": 3 }, "hits": { "hits": [ { "_id": "AVRaEdPJ3Lbw2oDzSIWM", "_index": "my_index", "_score": 0.625, "_source": { "user_name": "Domingo Suarez" }, "_type": "my_document1" } ], "max_score": 0.625, "total": 1 }, "timed_out": false, "took": 5 }