Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

ElasticSearch at berlinbuzzwords 2010

14,765 views

Published on

berlinbuzzwords presentation of elasticsearch

Published in: Technology, Education

ElasticSearch at berlinbuzzwords 2010

  1. 1. You Know, For Search
  2. 2. lightning talk
  3. 3. lightning talk kick ass
  4. 4. lightning talk kick ass ~joke
  5. 5. ping 127.0.0.1
  6. 6. ping 127.0.0.1 icmq_seq=0 name=shay.banon
  7. 7. ping 127.0.0.1 icmq_seq=0 name=shay.banon icmq_seq=1 a.k.a=kimchy
  8. 8. ping 127.0.0.1 icmq_seq=0 name=shay.banon icmq_seq=1 a.k.a=kimchy icmq_seq=2 blog=http://kimchy.org
  9. 9. ping 127.0.0.1 icmq_seq=0 name=shay.banon icmq_seq=1 a.k.a=kimchy icmq_seq=2 blog=http://kimchy.org icmq_seq=3 twitter=kimchy
  10. 10. ping elasticsearch
  11. 11. ping elasticsearch icmq_seq=0 tag=open_source (apache)
  12. 12. ping elasticsearch icmq_seq=0 tag=open_source (apache) icmq_seq=1 tag=distributed
  13. 13. ping elasticsearch icmq_seq=0 tag=open_source (apache) icmq_seq=1 tag=distributed icmq_seq=2 tag=RESTful
  14. 14. ping elasticsearch icmq_seq=0 tag=open_source (apache) icmq_seq=1 tag=distributed icmq_seq=2 tag=RESTful icmq_seq=3 tag=(no_sql) search_engine
  15. 15. ping elasticsearch icmq_seq=0 tag=open_source (apache) icmq_seq=1 tag=distributed icmq_seq=2 tag=RESTful icmq_seq=3 tag=(no_sql) search_engine icmq_seq=4 site=http://www.elasticsearch.com
  16. 16. open_source
  17. 17. open_source apache_2
  18. 18. open_source apache_2 http://github.com/elasticsearch/elasticsearch
  19. 19. open_source apache_2 http://github.com/elasticsearch/elasticsearch fork, push, send_pull
  20. 20. your_data
  21. 21. your_data => your_search
  22. 22. your_data => your_search a product should natively talk the domain model
  23. 23. your_data => your_search a product should natively talk the domain model and not the other way around
  24. 24. recipes for good domain model language
  25. 25. recipes for good domain model language - document_oriented
  26. 26. recipes for good domain model language - document_oriented - schema free
  27. 27. recipes for good domain model language - document_oriented - schema free - include json
  28. 28. recipes for good domain model language - document_oriented - schema free - include json de_facto open_web standard
  29. 29. lets build ourself an amazon store
  30. 30. lets build ourself an amazon store (we will get to the cloud laters)
  31. 31. first thing we have are books
  32. 32. this is how they look like { "book" : { "isbn" : "0812504321", "name" : "Call of the Wild", "author" : { "first_name" : "Jack", "last_name" : "London" }, "pages" : 128, "tag" : ["fiction", "children"] } }
  33. 33. lets index it $ curl -XPUT host:9200/amazon/book/0812504321 -d ‘ { "book" : { "isbn" : "0812504321", "name" : "Call of the Wild", "author" : { "first_name" : "Jack", "last_name" : "London" }, "pages" : 128, "tag" : ["fiction", "children"] } } ‘
  34. 34. ... `amazon` is the _index name $ curl -XPUT host:9200/amazon/book/0812504321 -d ‘ { "book" : { "isbn" : "0812504321", "name" : "Call of the Wild", "author" : { "first_name" : "Jack", "last_name" : "London" }, "pages" : 128, "tag" : ["fiction", "children"] } } ‘
  35. 35. ... `book` is the _type $ curl -XPUT host:9200/amazon/book/0812504321 -d ‘ { "book" : { "isbn" : "0812504321", "name" : "Call of the Wild", "author" : { "first_name" : "Jack", "last_name" : "London" }, "pages" : 128, "tag" : ["fiction", "children"] } } ‘
  36. 36. ... `0812504321` is the _id $ curl -XPUT host:9200/amazon/book/0812504321 -d ‘ { "book" : { "isbn" : "0812504321", "name" : "Call of the Wild", "author" : { "first_name" : "Jack", "last_name" : "London" }, "pages" : 128, "tag" : ["fiction", "children"] } } ‘
  37. 37. search for all fiction books $ curl -XGET host:9200/amazon/book/_search?q=tag:fiction‘
  38. 38. search for all fiction books $ curl -XGET host:9200/amazon/book/_search?q=tag:fiction‘ {"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":1,"hits": [{"_index":"amazon","_type":"book","_id":"0812504321", "_source" : { "book" : { "isbn" : "0812504321", "name" : "Call of the Wild", "author" : { "first_name" : "Jack", "last_name" : "London" }, "pages" : 128, "tag" : ["fiction", "children"] } }}]}}
  39. 39. ... number of total hits $ curl -XGET host:9200/amazon/book/_search?q=tag:fiction‘ {"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":1,"hits": [{"_index":"amazon","_type":"book","_id":"0812504321", "_source" : { "book" : { "isbn" : "0812504321", "name" : "Call of the Wild", "author" : { "first_name" : "Jack", "last_name" : "London" }, "pages" : 128, "tag" : ["fiction", "children"] } }}]}}
  40. 40. ... each hit has the `_index` it came from $ curl -XGET host:9200/amazon/book/_search?q=tag:fiction‘ {"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":1,"hits": [{"_index":"amazon","_type":"book","_id":"0812504321", "_source" : { "book" : { "isbn" : "0812504321", "name" : "Call of the Wild", "author" : { "first_name" : "Jack", "last_name" : "London" }, "pages" : 128, "tag" : ["fiction", "children"] } }}]}}
  41. 41. ... each hit has the `_type` it belongs to $ curl -XGET host:9200/amazon/book/_search?q=tag:fiction‘ {"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":1,"hits": [{"_index":"amazon","_type":"book","_id":"0812504321", "_source" : { "book" : { "isbn" : "0812504321", "name" : "Call of the Wild", "author" : { "first_name" : "Jack", "last_name" : "London" }, "pages" : 128, "tag" : ["fiction", "children"] } }}]}}
  42. 42. ... each hit has its `_id` $ curl -XGET host:9200/amazon/book/_search?q=tag:fiction‘ {"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":1,"hits": [{"_index":"amazon","_type":"book","_id":"0812504321", "_source" : { "book" : { "isbn" : "0812504321", "name" : "Call of the Wild", "author" : { "first_name" : "Jack", "last_name" : "London" }, "pages" : 128, "tag" : ["fiction", "children"] } }}]}}
  43. 43. ... each hit has the actual _source document $ curl -XGET host:9200/amazon/book/_search?q=tag:fiction‘ {"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":1,"hits": [{"_index":"amazon","_type":"book","_id":"0812504321", "_source" : { "book" : { "isbn" : "0812504321", "name" : "Call of the Wild", "author" : { "first_name" : "Jack", "last_name" : "London" }, "pages" : 128, "tag" : ["fiction", "children"] } }}]}}
  44. 44. ... each hit has the actual _source document $ curl -XGET host:9200/amazon/book/_search?q=tag:fiction‘ {"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":1,"hits": [{"_index":"amazon","_type":"book","_id":"0812504321", "_source" : { "book" : { "isbn" : "0812504321", "name" : "Call of the Wild", "author" : { "first_name" : "Jack", (can be disabled) "last_name" : "London" }, "pages" : 128, "tag" : ["fiction", "children"] } }}]}}
  45. 45. next, we have cds { "cd" : { "asin" : "B00192IV0O", "name" : "THE E.N.D. (Energy Never Dies)", "artist" : "Black Eyed Peas", "label" : "Interscope", "release_date": "2009-06-09", "tag" : ["hip-hop", "pop-rap"] } }
  46. 46. lets index it as well $ curl -XPUT host:9200/amazon/cd/B00192IV0O -d ‘ { "cd" : { "asin" : "B00192IV0O", "name" : "THE E.N.D. (Energy Never Dies)", "artist" : "Black Eyed Peas", "label" : "Interscope", "release_date": "2009-06-09", "tag" : ["hip-hop", "pop-rap"] } } ‘
  47. 47. ... same _index, `amazon` $ curl -XPUT host:9200/amazon/cd/B00192IV0O -d ‘ { "cd" : { "asin" : "B00192IV0O", "name" : "THE E.N.D. (Energy Never Dies)", "artist" : "Black Eyed Peas", "label" : "Interscope", "release_date": "2009-06-09", "tag" : ["hip-hop", "pop-rap"] } } ‘
  48. 48. ... new _type, `cd` $ curl -XPUT host:9200/amazon/cd/B00192IV0O -d ‘ { "cd" : { "asin" : "B00192IV0O", "name" : "THE E.N.D. (Energy Never Dies)", "artist" : "Black Eyed Peas", "label" : "Interscope", "release_date": "2009-06-09", "tag" : ["hip-hop", "pop-rap"] } } ‘
  49. 49. search for all hip-hop cds $ curl -XGET host:9200/amazon/cd/_search?q=tag:hip-hop‘
  50. 50. search across _type(s)
  51. 51. search across _type(s) search on both `cd` and `book` using `name` $ curl -XGET ‘host:9200/amazon/cd,book/_search?q=name:call’
  52. 52. search across _type(s) search on both `cd` and `book` using `name` $ curl -XGET ‘host:9200/amazon/cd,book/_search?q=name:call’ search on `_all` types using `name` $ curl -XGET ‘host:9200/amazon/_search?q=name:call’
  53. 53. search across _type(s) search on both `cd` and `book` using `name` $ curl -XGET ‘host:9200/amazon/cd,book/_search?q=name:call’ search on `_all` types using `name` $ curl -XGET ‘host:9200/amazon/_search?q=name:call’ search on specific fields types $ curl -XGET ‘host:9200/amazon/_search?q=book.author.first_name:jack OR cd.artist:jack‘
  54. 54. book and cd can be indices as well $ curl -XPUT host:9200/book/info/0812504321 -d ‘ { "isbn" : "0812504321", "name" : "Call of the Wild", "author" : { "first_name" : "Jack", "last_name" : "London" }, "pages" : 128, "tag" : ["fiction", "children"] } ‘
  55. 55. ... `book` is now the _index $ curl -XPUT host:9200/book/info/0812504321 -d ‘ { "isbn" : "0812504321", "name" : "Call of the Wild", "author" : { "first_name" : "Jack", "last_name" : "London" }, "pages" : 128, "tag" : ["fiction", "children"] } ‘
  56. 56. ... `info` is the _type $ curl -XPUT host:9200/book/info/0812504321 -d ‘ { "isbn" : "0812504321", "name" : "Call of the Wild", "author" : { "first_name" : "Jack", "last_name" : "London" }, "pages" : 128, "tag" : ["fiction", "children"] } ‘
  57. 57. cd is an index as well $ curl -XPUT host:9200/cd/info/B00192IV0O -d ‘ { "asin" : "B00192IV0O", "name" : "THE E.N.D. (Energy Never Dies)", "artist" : "Black Eyed Peas", "label" : "Interscope", "release_date": "2009-06-09", "tag" : ["hip-hop", "pop-rap"] } ‘
  58. 58. search across _index(es)
  59. 59. search across _index(es) search on both `cd` and `book` using `name` $ curl -XGET ‘host:9200/cd,book/info/_search?q=name:call’
  60. 60. search across _index(es) search on both `cd` and `book` using `name` $ curl -XGET ‘host:9200/cd,book/info/_search?q=name:call’ search on `_all` indices using `name` $ curl -XGET ‘host:9200/_search?q=name:call’
  61. 61. query_dsl
  62. 62. query_dsl done with the your_data part
  63. 63. query_dsl done with the your_data part => now to the your_search part
  64. 64. ... term_query { “term” : { “name” : “call” } }
  65. 65. ... term_query, also with type { “term” : { “name” : “call” } } { “term” : { “book.name” : “call” } }
  66. 66. ... range_query { “range” : { “pages” : { “from” : 200, “to” : 300 } } }
  67. 67. ... range_query, also with type { “range” : { “pages” : { “from” : 200, “to” : 300 } } } { “range” : { “book.pages” : { “from” : 200, “to” : 300 } } }
  68. 68. ... many more queries { “prefix” : { “book.name” : “ca” } }
  69. 69. ... many more queries { “prefix” : { “book.name” : “ca” } } { “wildcard” : { “book.name” : “c*ll” } }
  70. 70. ... many more queries { “prefix” : { { “book.name” : “ca” “field” : { } “book.name” : “+call +wild” } } { } “wildcard” : { “book.name” : “c*ll” } }
  71. 71. ... many more queries { “prefix” : { { “book.name” : “ca” “field” : { } “book.name” : “+call +wild” } } { } “wildcard” : { “book.name” : “c*ll” } } { “query_string” : { “query” : “+call +wild” } }
  72. 72. ... and, of course, bool_query { “bool” : { “must” : [ { “field” : { “book.name” : “+call +wild” } }, { “range” : { “book.pages” : { “gte” : 200 } } } ], “must_not” : [ { “term” : { “book.author.first_name” : “jack” } } ], “should” : [ { “term” : { “book.author.last_name” : “london” } } ] } }
  73. 73. filters faster than queries
  74. 74. filters faster than queries no scoring
  75. 75. filters faster than queries no scoring cached for even faster access
  76. 76. ... sample filters (wrapped as constant_score query) { “constant_score” : { “filter” : { “term” : { “name” : “call” } } } }
  77. 77. ... sample filters (wrapped as constant_score query) { “constant_score” : { “filter” : { “term” : { { “name” : “call” “constant_score” : { } “filter” : { } “range” : { } “book.pages” : { } “from” : 100, “to” : 200 } } } } }
  78. 78. ... easily combined with queries { “filtered” : { “query” : { “query_string” : { “query” : “+call +wild” } } “filter” : { “range” : { “book.pages” : { “from” : 100, “to” : 200 } } } } }
  79. 79. ... easily combined with queries { “filtered” : { “query” : { “query_string” : { “query” : “+call +wild” } } “filter” : { “range” : { “book.pages” : { “from” : 100, “to” : 200 } } } } }
  80. 80. ... easily combined with queries { “filtered” : { “query” : { “query_string” : { “query” : “+call +wild” } } “filter” : { “range” : { “book.pages” : { “from” : 100, “to” : 200 } } } } }
  81. 81. ... easily combined with queries { “filtered” : { “query” : { “query_string” : { “query” : “+call +wild” } } “filter” : { “range” : { “book.pages” : { “from” : 100, “to” : 200 } } } } }
  82. 82. used in a search request $ curl -XPOST ‘host:9200/amazon/cd/_search‘ -d ‘ { “query” : { “field” : { “name” : “+call + wild” } } } ‘
  83. 83. other search features
  84. 84. other search features highlighting
  85. 85. other search features highlighting facets
  86. 86. other search features highlighting retrieve specific fields facets
  87. 87. other search features highlighting retrieve specific fields facets _all field
  88. 88. other search features highlighting retrieve specific fields facets _all field scrolling
  89. 89. distributed
  90. 90. automatic shard allocation
  91. 91. ... start 1st node node 1
  92. 92. ... create an index with 2 shards, 1 replica node 1 PUT /amazon { “index.number_of_shards” : 2, “index.number_of_replicas” : 1 }
  93. 93. ... create an index with 2 shards, 1 replica node 1 1 PUT /amazon { “index.number_of_shards” : 2, “index.number_of_replicas” : 1 }
  94. 94. ... create an index with 2 shards, 1 replica node 1 1 2 PUT /amazon { “index.number_of_shards” : 2, “index.number_of_replicas” : 1 }
  95. 95. ... start 2nd node node 1 node 2 1 1 2 2
  96. 96. ... start 3rd and 4th node 1 node 2 node 3 node 4 1 1 2 2
  97. 97. ... index a document node 1 node 2 node 3 node 4 1 1 2 2 PUT /amazon/book/1 { ... }
  98. 98. ... index a document => hashed to 1st shard node 1 node 2 node 3 node 4 1 1 2 2 PUT /amazon/book/1 { ... }
  99. 99. ... index a document => replicated node 1 node 2 node 3 node 4 1 1 2 2 PUT /amazon/book/1 { ... }
  100. 100. ... index another document node 1 node 2 node 3 node 4 1 1 2 2 PUT /amazon/book/2 { ... }
  101. 101. ... index another document => hashed to 2nd shard node 1 node 2 node 3 node 4 1 1 2 2 PUT /amazon/book/2 { ... }
  102. 102. ... index another document => replicated node 1 node 2 node 3 node 4 1 1 2 2 PUT /amazon/book/2 { ... }
  103. 103. search node 1 node 2 node 3 node 4 1 1 2 2 GET /amazon/_search?q=name:call
  104. 104. search => scatter node 1 node 2 node 3 node 4 1 1 2 2 GET /amazon/_search?q=name:call
  105. 105. search => gather node 1 node 2 node 3 node 4 1 1 2 2 GET /amazon/_search?q=name:call
  106. 106. create another index node 1 node 2 node 3 node 4 1 1 2 2 PUT /amazon2 { “index.number_of_shards” : 1, “index.number_of_replicas” : 1 }
  107. 107. create another index node 1 node 2 node 3 node 4 1 1 1 1 2 2 PUT /amazon2 { “index.number_of_shards” : 1, “index.number_of_replicas” : 1 }
  108. 108. create another index node 1 node 2 node 3 node 4 1 1 1 1 2 2 almost all settings are index based
  109. 109. per document consistency
  110. 110. per document consistency - you index it, its there
  111. 111. per document consistency - you index it, its there - no need to commit / flush
  112. 112. per document consistency - you index it, its there - no need to commit / flush - uses a transaction log
  113. 113. (near) real_time search
  114. 114. (near) real_time search - automatic, 1 second refresh rate
  115. 115. (near) real_time search - automatic, 1 second refresh rate - there’s an api for that
  116. 116. (near) real_time search - automatic, 1 second refresh rate - there’s an api for that - POST /_refresh
  117. 117. long_term persistency
  118. 118. long_term persistency - similar to apple time_machine
  119. 119. long_term persistency - similar to apple time_machine - or data_grid write_behind
  120. 120. long_term persistency - similar to apple time_machine - or data_grid write_behind - write changes to index / translog
  121. 121. long_term persistency - similar to apple time_machine - or data_grid write_behind - write changes to index / translog - to a shared persistent storage
  122. 122. long_term persistency - similar to apple time_machine - or data_grid write_behind - write changes to index / translog - to a shared persistent storage - asynchronously (reliable)
  123. 123. long_term persistency - similar to apple time_machine - or data_grid write_behind - write changes to index / translog - to a shared persistent storage - asynchronously (reliable) - low requirements from storage
  124. 124. long_term persistency - similar to apple time_machine - or data_grid write_behind - write changes to index / translog - to a shared persistent storage - asynchronously (reliable) - low requirements from storage - cluster meta_data persisted
  125. 125. long_term persistency ... storage options
  126. 126. long_term persistency ... storage options - shared file system
  127. 127. long_term persistency ... storage options - shared file system - no need for locking, etc ...
  128. 128. long_term persistency ... storage options - shared file system - no need for locking, etc ... - hadoop, using HDFS
  129. 129. long_term persistency ... storage options - shared file system - no need for locking, etc ... - hadoop, using HDFS - cloud (aws_s3, rackspace_cloud_files)
  130. 130. long_term persistency ... node storage
  131. 131. long_term persistency ... node storage - considered transient
  132. 132. long_term persistency ... node storage - considered transient - can be recovered from gateway
  133. 133. long_term persistency ... node storage - considered transient - can be recovered from gateway - can be stored on
  134. 134. long_term persistency ... node storage - considered transient - can be recovered from gateway - can be stored on - local file system
  135. 135. long_term persistency ... node storage - considered transient - can be recovered from gateway - can be stored on - local file system - heap (jvm) memory
  136. 136. long_term persistency ... node storage - considered transient - can be recovered from gateway - can be stored on - local file system - heap (jvm) memory - native (os) memory
  137. 137. long_term persistency ... node storage - considered transient - can be recovered from gateway - can be stored on - local file system - heap (jvm) memory - native (os) memory - fs & memory combination
  138. 138. native cloud support
  139. 139. native cloud support in the cloud
  140. 140. native cloud support in the cloud machine removed / added more dynamically
  141. 141. native cloud support in the cloud machine removed / added more dynamically machine fail more “dynamically”
  142. 142. native cloud support in the cloud machine removed / added more dynamically machine fail more “dynamically” local storage is wiped
  143. 143. native cloud support ... storage
  144. 144. native cloud support ... storage - local storage is wiped
  145. 145. native cloud support ... storage - local storage is wiped - use external storage (aws ebs)
  146. 146. native cloud support ... storage - local storage is wiped - use external storage (aws ebs) - needs to be per machine / shard
  147. 147. native cloud support ... storage - local storage is wiped - use external storage (aws ebs) - needs to be per machine / shard - can get wiped as well ...
  148. 148. native cloud support ... storage - local storage is wiped - use external storage (aws ebs) - needs to be per machine / shard - can get wiped as well ... - mmm..., ok, snapshot to aws s3
  149. 149. native cloud support ... storage - local storage is wiped - use external storage (aws ebs) - needs to be per machine / shard - can get wiped as well ... - mmm..., ok, snapshot to aws s3 - expensive => ebs & s3
  150. 150. native cloud support ... storage - local storage is wiped - use external storage (aws ebs) - needs to be per machine / shard - can get wiped as well ... - mmm..., ok, snapshot to aws s3 - expensive => ebs & s3 - snapshot interval problematic
  151. 151. native cloud support ... storage - local storage is wiped - use external storage (aws ebs) - needs to be per machine / shard - can get wiped as well ... - mmm..., ok, snapshot to aws s3 - expensive => ebs & s3 - snapshot interval problematic
  152. 152. native cloud support ... the elastic way
  153. 153. native cloud support ... the elastic way - use long term persistency
  154. 154. native cloud support ... the elastic way - use long term persistency - directly into cloud blob storage
  155. 155. native cloud support ... the elastic way - use long term persistency - directly into cloud blob storage - aws s3, rackspace cloud_files
  156. 156. native cloud support ... the elastic way - use long term persistency - directly into cloud blob storage - aws s3, rackspace cloud_files
  157. 157. native cloud support ... the elastic way - use long term persistency - directly into cloud blob storage - aws s3, rackspace cloud_files - reliable & asynchronous
  158. 158. native cloud support ... discovery
  159. 159. native cloud support ... discovery - no multicast
  160. 160. native cloud support ... discovery - no multicast - resort to unicast discovery
  161. 161. native cloud support ... discovery - no multicast - resort to unicast discovery - who’s my special nodes ...
  162. 162. native cloud support ... discovery - no multicast - resort to unicast discovery - who’s my special nodes ... - require persistent ip’s
  163. 163. native cloud support ... discovery - no multicast - resort to unicast discovery - who’s my special nodes ... - require persistent ip’s - complicate operations
  164. 164. native cloud support ... the elastic way
  165. 165. native cloud support ... the elastic way - discovery support multicast & unicast
  166. 166. native cloud support ... the elastic way - discovery support multicast & unicast - but also support cloud discovery
  167. 167. native cloud support ... the elastic way - discovery support multicast & unicast - but also support cloud discovery - use cloud_provider API
  168. 168. native cloud support ... the elastic way - discovery support multicast & unicast - but also support cloud discovery - use cloud_provider API - ... to get the current list of nodes
  169. 169. ping end_session
  170. 170. ping end_session icmq_seq=0 desc=brief overview of elasticsearch
  171. 171. ping end_session icmq_seq=0 desc=brief overview of elasticsearch icmq_seq=1 version=current version is 0.8
  172. 172. ping end_session icmq_seq=0 desc=brief overview of elasticsearch icmq_seq=1 version=current version is 0.8 icmq_seq=2 notice=is beta
  173. 173. ping end_session icmq_seq=0 desc=brief overview of elasticsearch icmq_seq=1 version=current version is 0.8 icmq_seq=2 notice=is beta so expect bugs ...
  174. 174. ping end_session icmq_seq=0 desc=brief overview of elasticsearch icmq_seq=1 version=current version is 0.8 icmq_seq=2 notice=is beta so expect bugs ... they are actively fixed
  175. 175. ping end_session icmq_seq=0 desc=brief overview of elasticsearch icmq_seq=1 version=current version is 0.8 icmq_seq=2 notice=is beta so expect bugs ... they are actively fixed as new features are being added
  176. 176. ping end_session icmq_seq=0 desc=brief overview of elasticsearch icmq_seq=1 version=current version is 0.8 icmq_seq=2 notice=is beta so expect bugs ... they are actively fixed as new features are being added icmq_seq=3 join=mailing list, suggestions, code
  177. 177. ping end_session icmq_seq=0 desc=brief overview of elasticsearch icmq_seq=1 version=current version is 0.8 icmq_seq=2 notice=is beta so expect bugs ... they are actively fixed as new features are being added icmq_seq=3 join=mailing list, suggestions, code icmq_seq=4 thanks!
  178. 178. ping audience

×