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

Node.js e elasticsearch

Node.js e elasticsearch

Talk do capítulo de javascript na concrete solutions. Abordando como se trabalha com javascript e elasticsearch

Kirmayr Tomaz

October 19, 2017
Tweet

More Decks by Kirmayr Tomaz

Other Decks in Education

Transcript

  1. Sobre mim Kirmayr Tomaz • De Manaus/AM • Bacharel em

    Sistemas de Informação - UFAM • Organizador do Femug-AM • Mentor no Traning Center @kirmayrtomaz [email protected]
  2. Sobre mim Kirmayr Tomaz • De Manaus/AM • Bacharel em

    Sistemas de Informação - UFAM • Organizador do Femug-AM • Mentor no Traning Center @kirmayrtomaz [email protected]
  3. O que é o elasticsearch ? • Desenvolvido por Shay

    Banon • Uma camada acima do Apache Lucene • Feito em Java • Orientado a Documento • Full-Text Search
  4. O que é o elasticsearch ? • API REST •

    JSON • Open Source • Real Time • Distribuído • Escalavel • Analytics • Big Data
  5. Por que utilizar ? - Conhecer aprofundadamente algoritmos de busca

    em texto geram uma complexidade alta para o projeto - Nós como consultores precisamos oferecer soluções rápidas e escaláveis - Projeto Open Source - Saas - AWS possui um serviço próprio do elasticSearch
  6. Casos de sucesso - Github • Como satisfazer a busca

    dos 4 milhões de usuários da GitHub • Indexa 8 milhões de repositórios com mais de 2 bilhões https://www.elastic.co/use-cases/github "A busca é o núcleo do GitHub", diz Tim Pease, engenheiro de operações da GitHub. "Se você acessa o GitHub.com/search, pode pesquisar por meio de repositórios, usuários, problemas, solicitações de envio e código-fonte".
  7. Casos de sucesso - Tinder • Quais pessoas um usuário

    deslize diretamente • Quais pessoas irão deslizar diretamente para esse usuári • quando houver uma correspondência de deslocamento mútuo. https://www.elastic.co/elasticon/conf/2017/sf/tinder -using-the-elastic-stack-to-make-connections-arou nd-the-world
  8. Casos de sucesso - Tinder • Quais pessoas um usuário

    deslize diretamente • Quais pessoas irão deslizar diretamente para esse usuári • quando houver uma correspondência de deslocamento mútuo. https://www.elastic.co/elasticon/conf/2017/sf/tinder -using-the-elastic-stack-to-make-connections-arou nd-the-world
  9. Casos de sucesso - Tinder • Ajuda a identificar problemas

    potenciais cedo, • Permite-lhes saber quais os recursos do jogo que estão funcionando melhor (ou não o melhor ...) • Melhora todo o "tempo de percepção" https://www.elastic.co/elasticon/conf/2017/sf/buildi ng-a-near-real-time-pipeline-for-all-things-blizzard
  10. Indexe invertido • Pesquisando a palava javascript • Pesquisando a

    palavra java • Pesquisando a palava javascript e java [ { "string":"javascript", "documents": ['fato','verdade'] },{ "string":"java", "documents": ['naoAcredita','verdade'] },{ "string":"minutos", "documents": ['fato'] } //... ]
  11. Index yield searchClient.indices.create({ index: 'fixed_incomes', body: { 'settings': { 'analysis':

    { 'analyzer': { 'partialAnalyzer': { 'type': 'custom', 'tokenizer': 'ngram_tokenizer', 'filter': [ 'asciifolding', 'lowercase' ] }, 'searchAnalyzer': { 'type': 'custom', 'tokenizer': 'standard', 'filter': [ 'asciifolding', 'lowercase' ] }
  12. 'mappings': { 'blog': { 'properties': { 'emitter': { 'fielddata': true,

    'type': 'text', 'analyzer': 'partialAnalyzer', 'search_analyzer': 'searchAnalyzer' }, ....
  13. Index , 'mappings': { 'blog': { 'properties' : { 'indexAndRate'

    : { 'properties' : { 'percentIndexValue' : { 'type': 'half_float' }, 'percentIndexMaxValue' : { 'type': 'half_float' } } } } } }
  14. Index const pessoaBulk = [{ index: { _index: 'pessoa', _type:

    'blog', _id: pessoa.id } }, { id: pessoa.id, name: pessoa.name, rateFunding: pessoa.rateFunding, liquidity: pessoa.liquidity }] yield searchClient.bulk({ Body: pessoaBulk })
  15. Busca GET /_search { "query": { "bool": { "must": [

    { "match": { "title": "Search" }}, { "match": { "content": "Elasticsearch" }} ], "filter": [ { "term": { "status": "published" }}, { "range": { "publish_date": { "gte": "2015-01-01" }}} ] } } } https://www.elastic.co/guide/en/elasticsearch/reference/current/query-filter-context.html
  16. Busca GET /_search { "query": { "bool": { "must": [

    { "match": { "title": "Search" }}, { "match": { "content": "Elasticsearch" }} ], "filter": [ { "term": { "status": "published" }}, { "range": { "publish_date": { "gte": "2015-01-01" }}} ] } }, "highlight": { "fields": { "title": {} } } https://www.elastic.co/guide/en/elasticsearch/reference/current/query-filter-context.html
  17. Busca GET /_search { "query": { "bool": { "from": 0.

    "size": {}, "limit": {}, "_source": [ "id", "name", "idade" ], "must": [ { "match": { "title": "Search" }}, { "match": { "content": "Elasticsearch" }} ], "filter": [ { "term": { "status": "published" }}, ] } } https://www.elastic.co/guide/en/elasticsearch/reference/current/query-filter-context.html
  18. Referência Indixe invertido - http://www.facom.ufu.br/~miani/site/teaching_files/ori/T%C3%B3pico%208%20-%20%C3%8 Dndice%20invertido.pdf Elasticsearch - https://www.infoq.com/br/presentations/utilize-todo-o-poder-do-wlasticsearch https://www.ibm.com/developerworks/br/java/library/os-apache-lucenesearch/index.html

    https://www.sitepoint.com/search-engine-node-elasticsearch/ https://www.compose.com/articles/getting-started-with-elasticsearch-and-node/ http://blog.caelum.com.br/buscas-eficientes-com-elasticsearch/ https://github.com/appbaseio/dejavu
  19. Centro Av. Presidente Wilson, 231 - 29º andar (21) 2240-2030

    Cidade Monções Av. Nações Unidas, 11.541 - 3º andar (11) 4119-0449 Savassi Av. Getúlio Vargas, 671 Sala 800 - 8º andar (31) 3360-8900 www.concrete.com.br