Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Elasticsearch Intro

Elasticsearch Intro

Brief Elasticsearch introduction on OSDC.tw 2013

4d8c65b603554811079a7ea9b7aab9c0?s=128

Kang-min Liu

April 20, 2013
Tweet

Transcript

  1. ELASTICSEARCH መፌհ঺ Kang-min Liu <gugod@gugod.org> 13年4月20日星期六

  2. ELASTICSEARCH Distributed (Near) Real Time Search Engine RESTful ෩ɼLucene ࠎɼNoSQL

    ܥ elasticsearch.org https://github.com/elasticsearch/elasticsearch elasticsearch.com 13年4月20日星期六
  3. ໊ࢺሣর Relational DB ElasticSearch database index table type row document

    column field schema mapping index (શ෦) SQL query DSL 13年4月20日星期六
  4. CREATE curl -XPOST http://localhost:9200/social/tweet/1 -d '{ content: "େՈ޷" user_name: "gugod"

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

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

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

    }' index type 13年4月20日星期六
  8. READ curl -XGET http://localhost:9200/social/tweet/1 13年4月20日星期六

  9. UPDATE curl -XPUT http://localhost:9200/social/tweet/1 -d '{ content: "େՈ޷" user_name: "gugod"

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

  11. 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日星期六
  12. SEARCH $ curl -XPOST 'http://localhost:9200/twitter/tweet/_search' -d '{ "query": { "term"

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

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

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

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

    Ԇ؇: ԆᬌɺԆޙɻ 13年4月20日星期六
  17. TOKENIZATION Ԇ ల ੑ ෺ ࣭ ۩ Ԇ ௕ ٴ

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

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

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

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

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

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

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

  25. QUERY 13年4月20日星期六

  26. { "query": { "term": { "user": "ingy" } } }

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

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

    TEXT Ṝᒬ ᒬಹ ಹᒬ 13年4月20日星期六
  29. { "query": { "range" : { "age" : { "from"

    : 10, "to" : 20, "include_lower" : true, "include_upper": false, "boost" : 2.0 } } } } RANGE 13年4月20日星期六
  30. { "query": { "query_string" : { "query" : "Ṝᒬ AND

    ಹᒬ OR ዎᒬ" } } } QUERY_STRING 13年4月20日星期六
  31. { "query": { "wildcard" : { "user" : "ki*y" }

    } } WILDCARD 13年4月20日星期六
  32. { "query": { "more_like_this" : { "like_text" : "Ṝᒬಹᒬ", "min_term_freq"

    : 1, "max_query_terms" : 12 } } } MLT(MORE LIKE THIS) 13年4月20日星期六
  33. ๖య + ES https://github.com/g0v/esmoe 13年4月20日星期六

  34. จ݅݁ߏ { "heteronyms": [ { "bopomofo": "ㄧㄢˊ ㄓㄢˇ ㄒㄧㄥˋ", "bopomofo2":

    "yán jǎn shìng", "definitions": [ { "def": "෺࣭۩Ԇ௕ٴల։తੑ࣭ɼ᜝ҝʮԆలੑʯɻҝେଟ Ꮠۚሱ೭ಛੑɻ" } ], "pinyin": "yán zhǎn xìng" } ], "title": "Ԇలੑ" }, 13年4月20日星期六
  35. ਖ਼查 # 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日星期六
  36. ൓查ʢ༝ٛ查ࢺʣ # 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日星期六
  37. ༻ྫ۟查 # 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日星期六
  38. ༻Ҿݴ查 # 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日星期六
  39. ༻஫Ի查 # curl --silent -XPOST http://localhost:9200/moedict/revised/ _search'?pretty' -d '{query:{text_phrase:{bopomofo:"ㄏㄨㄣˋ ㄏㄨ

    ㄣˋ"}}}' | grep _id "_id" : "䓬䓬", "_id" : "ࠞࠞ", "_id" : "ࠞࠞಱಱ", "_id" : "ᕒᕒ", 13年4月20日星期六
  40. ग़ݱස཰࠷ߴత஫Ի # curl --silent -XPOST http://localhost:9200/moedict/revised/_search'?pretty' -d ' { "query"

    : { "match_all" : {} }, "facets" : { "bpmf" : { "terms" : { "field" : "bopomofo" } } } }' 13年4月20日星期六
  41. { "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日星期六
  42. FACETS 13年4月20日星期六

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

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

  45. ྫɿཱӃެใ { "speaker" : "௠ҕһਗ਼ሞ", "content" : "զࡏਪಈখࡾ௨త࣌ީɼ኷ଟਓ౎ᔒ༗஫ҙ౸զਅਖ਼త༻ҙɼআྃ ੋҝᙛ஍ᗠऔൟᒇਐ㑊ɺ⃧Ճݐઃతػ။೭֎ɼզ࠷ஶ؟ر๬తੋ᤻༝খࡾ௨ိ࠵Խશ ໘తࡾ௨ɼೳ夠ᩋၷ؛᮫܎ղౚɻኺṜҰݸᴍ੾ೖɼፙҰࠣٞ୊ᢛେ཮ਐߦሣஊɻ",

    "issue" : "3109" } { "speaker" : "ཥҕһܚ՚", "content" : "ر๬แׅ֩Ұɺ֩ೋɺ֩ࡾɺ࢛֩త҆શ܎Ꮠ౎ೳఏߴɻ", "issue" : "3867" } 13年4月20日星期六
  46. curl -XPOST http://localhost:9200/lyg0v/interp_body/_search'?pretty=1' -d ' { "query": { "match_all": {}

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

    }, "facets": { "top": { "terms": { "field": "speaker" } } } }' 13年4月20日星期六
  48. OPERATION 13年4月20日星期六

  49. CLUSTERING auto-discovery auto-elected master data replication / partition with flexible

    shard / replica setting 13年4月20日星期六
  50. 13年4月20日星期六

  51. 13年4月20日星期六

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

  53. CLUSTERING more shard faster indexing / scaling more replica faster

    searching / failover 13年4月20日星期六
  54. 13年4月20日星期六

  55. 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日星期六
  56. JVM GC ᅷ 13年4月20日星期六

  57. 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日星期六
  58. __END__ OKTHXBYE 13年4月20日星期六