Slide 1

Slide 1 text

ELASTICSEARCH መፌհ঺ Kang-min Liu 13年4月20日星期六

Slide 2

Slide 2 text

ELASTICSEARCH Distributed (Near) Real Time Search Engine RESTful ෩ɼLucene ࠎɼNoSQL ܥ elasticsearch.org https://github.com/elasticsearch/elasticsearch elasticsearch.com 13年4月20日星期六

Slide 3

Slide 3 text

໊ࢺሣর Relational DB ElasticSearch database index table type row document column field schema mapping index (શ෦) SQL query DSL 13年4月20日星期六

Slide 4

Slide 4 text

CREATE curl -XPOST http://localhost:9200/social/tweet/1 -d '{ content: "େՈ޷" user_name: "gugod" }' 13年4月20日星期六

Slide 5

Slide 5 text

CREATE curl -XPOST http://localhost:9200/social/tweet/1 -d '{ content: "େՈ޷" user_name: "gugod" }' 13年4月20日星期六

Slide 6

Slide 6 text

CREATE curl -XPOST http://localhost:9200/social/tweet/1 -d '{ content: "େՈ޷" user: { name: "gugod", id: 385782393, }, tag: ["osdctw", "demo", "moedict"] }' 13年4月20日星期六

Slide 7

Slide 7 text

CREATE curl -XPOST http://localhost:9200/social/tweet/1 -d '{ content: "େՈ޷" user_name: "gugod" }' index type 13年4月20日星期六

Slide 8

Slide 8 text

READ curl -XGET http://localhost:9200/social/tweet/1 13年4月20日星期六

Slide 9

Slide 9 text

UPDATE curl -XPUT http://localhost:9200/social/tweet/1 -d '{ content: "େՈ޷" user_name: "gugod" }' 13年4月20日星期六

Slide 10

Slide 10 text

DELETE curl -XDELETE http://localhost:9200/social/tweet/1 13年4月20日星期六

Slide 11

Slide 11 text

SEARCH $ curl -XGET 'http://localhost:9200/twitter/tweet/_search' -d '{ "query": { "filtered" : { "query" : { "query_string" : { "query" : "some query string here" } }, "filter" : { "term" : { "user" : "kimchy" } } } } } ' query DSL 13年4月20日星期六

Slide 12

Slide 12 text

SEARCH $ curl -XPOST 'http://localhost:9200/twitter/tweet/_search' -d '{ "query": { "term" : { "user" : "kimchy" } } } ' 13年4月20日星期六

Slide 13

Slide 13 text

SEARCH $ curl -XGET 'http://localhost:9200/twitter/tweet/_search?q=nihao' 13年4月20日星期六

Slide 14

Slide 14 text

፺ਘҾ№ݪཧ 13年4月20日星期六

Slide 15

Slide 15 text

Inverted index ൓޲ࡧҾ term → id Relevance Scoring ෼Ꮠ 13年4月20日星期六

Slide 16

Slide 16 text

༌ೖจ݅ Ԇలੑ: ෺࣭۩Ԇ௕ٴల։తੑ࣭ɼ᜝ҝʮԆలੑʯɻҝେଟᏐۚሱ೭ಛੑɻ Ԇฏ܊Ԧ: ໌Ṅ੒ޭత෧ᥒɻ Ԇ೥ӹᆹ: Ԇ௕ᆹ໋ɼଟҝᰌॕਓ௕ᆹత༻ࢺɻ Ԇੑ: ෺࣭ՄԆ௕ҝࡉើతੑ࣭ɼ᜝ҝʮԆੑʯɻࡐྉࡏഁᆦ೭લɼఄݱ઼ੑᏓܗతఔ ౓ɻԆੑՄ༻፮ྗࢼᱛதత৳௕཰ٴᏗ໘ॖ཰දࣔ೭ɻ Ԇ؇: ԆᬌɺԆޙɻ 13年4月20日星期六

Slide 17

Slide 17 text

TOKENIZATION Ԇ ల ੑ ෺ ࣭ ۩ Ԇ ௕ ٴ ల ։ త ੑ ࣭ ᜝ ҝ Ԇ ల ੑ ҝ େ ଟ Ꮠ ۚ ሱ ೭ ಛ ੑ Ԇ ฏ ܊ Ԧ ໌ Ṅ ੒ ޭ త ෧ ᥒ Ԇ ೥ ӹ ᆹ Ԇ ௕ ᆹ ໋ ଟ ҝ ᰌ ॕ ਓ ௕ ᆹ త ༻ ࢺ Ԇ ੑ ෺ ࣭ Մ Ԇ ௕ ҝ ࡉ ើ త ੑ ࣭ ᜝ ҝ Ԇ ੑ ࡐ ྉ ࡏ ഁ ᆦ ೭ લ ఄ ݱ ઼ ੑ Ꮣ ܗ త ఔ ౓ Ԇ ੑ Մ ༻ ፮ ྗ ࢼ ᱛ த త ৳ ௕ ཰ ٴ Ꮧ ໘ ॖ ཰ ද ࣔ ೭ Ԇ ؇ Ԇ ᬌ Ԇ ޙ 13年4月20日星期六

Slide 18

Slide 18 text

TOKENIZATION Ԇలੑ: ෺࣭ ࣭۩ ۩Ԇ Ԇ௕ ௕ٴ ٴల ల։ ։త తੑ ੑ࣭ ᜝ҝ Ԇల లੑ ҝେ େଟ ଟᏐ Ꮠۚ ۚሱ ሱ೭ ೭ಛ ಛੑ Ԇฏ܊Ԧ: ໌Ṅ Ṅ੒ ੒ޭ ޭత త෧ ෧ᥒ Ԇ೥ӹᆹ: Ԇ௕ ௕ᆹ ᆹ໋ ଟҝ ҝᰌ ᰌॕ ॕਓ ਓ௕ ௕ᆹ ᆹత త༻ ༻ࢺ Ԇੑ: ෺࣭ ࣭Մ ՄԆ Ԇ௕ ௕ҝ ҝࡉ ࡉើ ើత తੑ ੑ࣭ ᜝ҝ Ԇੑ ࡐྉ ྉࡏ ࡏ ഁ ഁᆦ ᆦ೭ ೭લ ఄݱ ݱ઼ ઼ੑ ੑᏓ Ꮣܗ ܗత తఔ ఔ౓ Ԇੑ ੑՄ Մ༻ ༻፮ ፮ྗ ྗࢼ ࢼᱛ ᱛத தత త৳ ৳௕ ௕཰ ཰ٴ ٴᏗ Ꮧ໘ ໘ॖ ॖ཰ ཰ද දࣔ ࣔ೭ Ԇ؇: Ԇᬌ Ԇޙ 13年4月20日星期六

Slide 19

Slide 19 text

፺ਘɿԆ௕ Ԇలੑ: ෺࣭ ࣭۩ ۩Ԇ Ԇ௕ ௕ٴ ٴల ల։ ։త తੑ ੑ࣭ ᜝ҝ Ԇల లੑ ҝେ େଟ ଟᏐ Ꮠۚ ۚሱ ሱ೭ ೭ಛ ಛੑ Ԇฏ܊Ԧ: ໌Ṅ Ṅ੒ ੒ޭ ޭత త෧ ෧ᥒ Ԇ೥ӹᆹ: Ԇ௕ ௕ᆹ ᆹ໋ ଟҝ ҝᰌ ᰌॕ ॕਓ ਓ௕ ௕ᆹ ᆹత త༻ ༻ࢺ Ԇੑ: ෺࣭ ࣭Մ ՄԆ Ԇ௕ ௕ҝ ҝࡉ ࡉើ ើత తੑ ੑ࣭ ᜝ҝ Ԇੑ ࡐྉ ྉࡏ ࡏ ഁ ഁᆦ ᆦ೭ ೭લ ఄݱ ݱ઼ ઼ੑ ੑᏓ Ꮣܗ ܗత తఔ ఔ౓ Ԇੑ ੑՄ Մ༻ ༻፮ ፮ྗ ྗࢼ ࢼᱛ ᱛத தత త৳ ৳௕ ௕཰ ཰ٴ ٴᏗ Ꮧ໘ ໘ॖ ॖ཰ ཰ද දࣔ ࣔ೭ Ԇ؇: Ԇᬌ Ԇޙ 13年4月20日星期六

Slide 20

Slide 20 text

څ෼ Ԇలੑ: ෺࣭ ࣭۩ ۩Ԇ Ԇ௕ ௕ٴ ٴల ల։ ։త తੑ ੑ࣭ ᜝ҝ Ԇల లੑ ҝେ େଟ ଟᏐ Ꮠۚ ۚሱ ሱ೭ ೭ಛ ಛੑ Ԇฏ܊Ԧ: ໌Ṅ Ṅ੒ ੒ޭ ޭత త෧ ෧ᥒ Ԇ೥ӹᆹ: Ԇ௕ ௕ᆹ ᆹ໋ ଟҝ ҝᰌ ᰌॕ ॕਓ ਓ௕ ௕ᆹ ᆹత త༻ ༻ࢺ Ԇੑ: ෺࣭ ࣭Մ ՄԆ Ԇ௕ ௕ҝ ҝࡉ ࡉើ ើత తੑ ੑ࣭ ᜝ҝ Ԇੑ ࡐྉ ྉࡏ ࡏ ഁ ഁᆦ ᆦ೭ ೭લ ఄݱ ݱ઼ ઼ੑ ੑᏓ Ꮣܗ ܗత తఔ ఔ౓ Ԇੑ ੑՄ Մ༻ ༻፮ ፮ྗ ྗࢼ ࢼᱛ ᱛத தత త৳ ৳௕ ௕཰ ཰ٴ ٴᏗ Ꮧ໘ ໘ॖ ॖ཰ ཰ද දࣔ ࣔ೭ Ԇ؇: Ԇᬌ Ԇޙ 0.5 0.7 0.3 13年4月20日星期六

Slide 21

Slide 21 text

څ෼ จ݅తࢺᏐʢ௕౓ʣ ࢺࡏจ݅㚎తස཰ ࢺࡏࡧҾ㚎తස཰ ೚ҙࢦఆ 13年4月20日星期六

Slide 22

Slide 22 text

څ෼ จ݅తࢺᏐʢ௕౓ʣ ࢺࡏจ݅㚎తස཰ ࢺࡏࡧҾ㚎తස཰ ೚ҙࢦఆ 13年4月20日星期六

Slide 23

Slide 23 text

څ෼ จ݅తࢺᏐʢ௕౓ʣ ࢺࡏจ݅㚎తස཰ ࢺࡏࡧҾ㚎తස཰ ೚ҙࢦఆ 13年4月20日星期六

Slide 24

Slide 24 text

څ෼ จ݅తࢺᏐʢ௕౓ʣ ࢺࡏจ݅㚎తස཰ ࢺࡏࡧҾ㚎తස཰ ೚ҙࢦఆ 13年4月20日星期六

Slide 25

Slide 25 text

QUERY 13年4月20日星期六

Slide 26

Slide 26 text

{ "query": { "term": { "user": "ingy" } } } TERM 13年4月20日星期六

Slide 27

Slide 27 text

{ "query": { "text": { "content": "Ṝᒬಹᒬ" } } } TEXT 13年4月20日星期六

Slide 28

Slide 28 text

{ "query": { "text": { "content": "Ṝᒬಹᒬ" } } } TEXT Ṝᒬ ᒬಹ ಹᒬ 13年4月20日星期六

Slide 29

Slide 29 text

{ "query": { "range" : { "age" : { "from" : 10, "to" : 20, "include_lower" : true, "include_upper": false, "boost" : 2.0 } } } } RANGE 13年4月20日星期六

Slide 30

Slide 30 text

{ "query": { "query_string" : { "query" : "Ṝᒬ AND ಹᒬ OR ዎᒬ" } } } QUERY_STRING 13年4月20日星期六

Slide 31

Slide 31 text

{ "query": { "wildcard" : { "user" : "ki*y" } } } WILDCARD 13年4月20日星期六

Slide 32

Slide 32 text

{ "query": { "more_like_this" : { "like_text" : "Ṝᒬಹᒬ", "min_term_freq" : 1, "max_query_terms" : 12 } } } MLT(MORE LIKE THIS) 13年4月20日星期六

Slide 33

Slide 33 text

๖య + ES https://github.com/g0v/esmoe 13年4月20日星期六

Slide 34

Slide 34 text

จ݅݁ߏ { "heteronyms": [ { "bopomofo": "ㄧㄢˊ ㄓㄢˇ ㄒㄧㄥˋ", "bopomofo2": "yán jǎn shìng", "definitions": [ { "def": "෺࣭۩Ԇ௕ٴల։తੑ࣭ɼ᜝ҝʮԆలੑʯɻҝେଟ Ꮠۚሱ೭ಛੑɻ" } ], "pinyin": "yán zhǎn xìng" } ], "title": "Ԇలੑ" }, 13年4月20日星期六

Slide 35

Slide 35 text

ਖ਼查 # curl http://localhost:9200/moedict/revised/$(uri_escape ፺)'?pretty=1' { "_index" : "moedict", "_type" : "revised", "_id" : "፺", "_version" : 1, "exists" : true, "_source" : {"non_radical_stroke_count":10,"stroke_count": 13,"heteronyms":[{"bopomofo":"ㄙㄡ","pinyin":"sōu","bopomofo2":"sōu","definitions": [{"quote":["׽ॻɽრ࿡ɽ෢ఇلɿʮळɼด৓໳େ፺ɼᚙᨶፅಮޒݪɻʯ","ᡅᜊࢤҟɽრҰɽޅ ՇঁɿʮቮࣕओਓᏑञ۩ɼগҰऋɼ້፺ෆಘɻʯ"],"def":"ፙਘɺਘٻɻ","type":"ಈ"}, {"example":["೗ɿʮ፺਎ʯɻ"],"quote":["ݩɽԦመำɽ੢ኈهɽୈࡾຊɽୈೋંɿʮෆߠ፺ࣗ ݾڰҝɼ୞଴ཁ᧯ผਓഁ୼ɻʯ"],"def":"ᒾ查、檢 點。","type":"ಈ"}]}],"title":"፺","radical":"ख"} } 13年4月20日星期六

Slide 36

Slide 36 text

൓查ʢ༝ٛ查ࢺʣ # curl --silent http://localhost:9200/moedict/revised/_search\ '?fields=&pretty=1&q='$(uri_escape ፙਘ) | grep _id "_id" : "ਘࠜ", "_id" : "ਘፙ", "_id" : "๚ٻ", "_id" : "୳ᛝ", "_id" : "ਘٻ", "_id" : "ፙਘ", "_id" : "ፙػ။", "_id" : "ࣗፙ", "_id" : "ਘᒜ", "_id" : "୳ࡧ", 13年4月20日星期六

Slide 37

Slide 37 text

༻ྫ۟查 # curl --silent -XPOST http://localhost:9200/moedict/revised/_search'?pretty’\ -d '{query:{text:{example: "ߚᒭເ" }}}' { "took" : 8, "timed_out" : false, "_shards" : { "total" : 5, "successful" : 5, "failed" : 0 }, "hits" : { "total" : 485, "max_score" : 5.116848, "hits" : [ { "_index" : "moedict", "_type" : "revised", "_id" : "ঞຊ", "_score" : 5.116848, "_source" : {"heteronyms":[{"bopomofo":"ㄔㄠ ㄅㄣ ˇ","pinyin":"chāo běn","bopomofo2":"chāu běn","definitions":[{"link":["ຠ᜝ҝʮሜຊʯɺʮᭁ ຊʯɻ"],"example":["೗ɿʮঞຊߚᒭເʯɻ"],"synonyms":"खຊ","def":"खঞతॻ ੶ɻ"}]}],"title":"ঞຊ"} }, { "_index" : "moedict", "_type" : "revised", "_id" : "Ұ໊", "_score" : 4.27241, "_source" : {"heteronyms":[{"bopomofo":"ㄧ ㄇㄧㄥˊ","pinyin":"yī míng","bopomofo2":"yī míng","definitions":[{"quote":["ߚᒭເɽୈ࢛ेീճɿʮ೿Լᤴᦛ೭ೕ෕ 13年4月20日星期六

Slide 38

Slide 38 text

༻Ҿݴ查 # curl --silent -XPOST http://localhost:9200/moedict/revised/_search'?pretty'\ -d '{query:{text:{quote: "ߚᒭເ"}}}' { "took" : 18, "timed_out" : false, "_shards" : { "total" : 5, "successful" : 5, "failed" : 0 }, "hits" : { "total" : 11858, "max_score" : 1.7719736, "hits" : [ { "_index" : "moedict", "_type" : "revised", "_id" : "ݪߘ", "_score" : 1.7719736, "_source" : {"heteronyms":[{"bopomofo":"ㄩㄢˊ ㄍㄠˇ","pinyin":"yuán gǎo","bopomofo2":"yuán gǎu","definitions":[{"synonyms":"ఈߘ,ߘຊ,ॳߘ,૲ߘ","quote":["ߚᒭເɽୈޒ ճɿʮ㘸ඟɼճ಄໋খᱺऔྃʰߚᒭເʱݪߘိɼᬇᢛሞۄɻʯ"],"def":"࡞඼࠷ॳతखߘɻ"}]}],"title":"ݪ ߘ"} }, { "_index" : "moedict", "_type" : "revised", "_id" : "Ұ໘೭㐊", "_score" : 1.6941531, "_source" : {"heteronyms":[{"bopomofo":"ㄧ ㄇㄧㄢˋ ㄓ ㄩㄢ 13年4月20日星期六

Slide 39

Slide 39 text

༻஫Ի查 # curl --silent -XPOST http://localhost:9200/moedict/revised/ _search'?pretty' -d '{query:{text_phrase:{bopomofo:"ㄏㄨㄣˋ ㄏㄨ ㄣˋ"}}}' | grep _id "_id" : "䓬䓬", "_id" : "ࠞࠞ", "_id" : "ࠞࠞಱಱ", "_id" : "ᕒᕒ", 13年4月20日星期六

Slide 40

Slide 40 text

ग़ݱස཰࠷ߴత஫Ի # curl --silent -XPOST http://localhost:9200/moedict/revised/_search'?pretty' -d ' { "query" : { "match_all" : {} }, "facets" : { "bpmf" : { "terms" : { "field" : "bopomofo" } } } }' 13年4月20日星期六

Slide 41

Slide 41 text

{ "facets" : { "bpmf" : { "_type" : "terms", "missing" : 1485, "total" : 430736, "other" : 401706, "terms" : [ { "term" : "ㄅㄨˋ", "count" : 5400 }, { "term" : "ㄕˋ", "count" : 4438 }, { "term" : "ㄧˋ", "count" : 3218 }, { "term" : "ㄧ", "count" : 2939 }, { "term" : "ㄖㄣˊ", "count" : 2754 }, { "term" : "ㄓ", "count" : 2625 }, { "term" : "ㄌㄧˋ", "count" : 2580 }, { "term" : "ㄗ", "count" : 2044 }, { "term" : "ㄕˊ", "count" : 1541 }, { "term" : "ㄒㄧㄣ", "count" : 1491 } ] } } 13年4月20日星期六

Slide 42

Slide 42 text

FACETS 13年4月20日星期六

Slide 43

Slide 43 text

FACETS Aggregations SELECT SUM(salary) GROUP BY name FROM employee; 13年4月20日星期六

Slide 44

Slide 44 text

FACETS range term stats geo distance statistical date histogram 13年4月20日星期六

Slide 45

Slide 45 text

ྫɿཱӃެใ { "speaker" : "௠ҕһਗ਼ሞ", "content" : "զࡏਪಈখࡾ௨త࣌ީɼ኷ଟਓ౎ᔒ༗஫ҙ౸զਅਖ਼త༻ҙɼআྃ ੋҝᙛ஍ᗠऔൟᒇਐ㑊ɺ⃧Ճݐઃతػ။೭֎ɼզ࠷ஶ؟ر๬తੋ᤻༝খࡾ௨ိ࠵Խશ ໘తࡾ௨ɼೳ夠ᩋၷ؛᮫܎ղౚɻኺṜҰݸᴍ੾ೖɼፙҰࠣٞ୊ᢛେ཮ਐߦሣஊɻ", "issue" : "3109" } { "speaker" : "ཥҕһܚ՚", "content" : "ر๬แׅ֩Ұɺ֩ೋɺ֩ࡾɺ࢛֩త҆શ܎Ꮠ౎ೳఏߴɻ", "issue" : "3867" } 13年4月20日星期六

Slide 46

Slide 46 text

curl -XPOST http://localhost:9200/lyg0v/interp_body/_search'?pretty=1' -d ' { "query": { "match_all": {} }, "facets": { "top": { "terms": { "field": "content" } } } }' 13年4月20日星期六

Slide 47

Slide 47 text

curl -XPOST http://localhost:9200/lyg0v/interp_body/_search'?pretty=1' -d ' { "query": { "match_all": {} }, "facets": { "top": { "terms": { "field": "speaker" } } } }' 13年4月20日星期六

Slide 48

Slide 48 text

OPERATION 13年4月20日星期六

Slide 49

Slide 49 text

CLUSTERING auto-discovery auto-elected master data replication / partition with flexible shard / replica setting 13年4月20日星期六

Slide 50

Slide 50 text

13年4月20日星期六

Slide 51

Slide 51 text

13年4月20日星期六

Slide 52

Slide 52 text

shard ~ partition replica ~ duplication 13年4月20日星期六

Slide 53

Slide 53 text

CLUSTERING more shard faster indexing / scaling more replica faster searching / failover 13年4月20日星期六

Slide 54

Slide 54 text

13年4月20日星期六

Slide 55

Slide 55 text

STATS API http://www.elasticsearch.org/guide/reference/api/admin- cluster-nodes-stats/ औಘ֤߲ᏐᎦ จ݅Ꮠɺ፺ਘ࣍Ꮠɺྦྷܭ፺ਘ࣌ᏐɺྦྷܭݐࡧҾ࣌ؒ cluster / primary / node / index ֤छڃผ JVM CPU/Heap / OS / Thread / transport ࢖༻㐫ଶ 13年4月20日星期六

Slide 56

Slide 56 text

JVM GC ᅷ 13年4月20日星期六

Slide 57

Slide 57 text

SEE ALSO Cool, Bonsai Cool - An introduction to ElasticSearch http://bit.ly/112xtsk The Road to a Distributed Search Engine http://bit.ly/ZqBBUt elasticsearch, Big Data, Search & Analytics http://bit.ly/11tmbyK 13年4月20日星期六

Slide 58

Slide 58 text

__END__ OKTHXBYE 13年4月20日星期六