Sumário

- Solr

- ElasticSearch

- Recursos

- Cenário

- Benchmark

- Tecnologias

Solr

- HTTP REST API

- Possui Dashboard

- Fácil instalação

- Indexa diversos tipos de arquivos:
PDF, CSV, XML, JSON

- Retorno dos dados:
JSON, XML, CSV

- Documentação

Quem Usa

ElasticSearch

- Não possui Dashboard

- HTTP REST API

- Possui consulta booleana

- Retorno dos dados: JSON, XML/HTML

- Documentação

 

Quem Usa

Benchmark

Cenário

Um conjunto de 18020 registros de ofertas pecuárias provenientes do OLX

Caso real: ofertas disponibilizadas na plataforma de marketplace Pastar

Especificações

- Modelo: MacBook Air

- Processador: 1,6GHz I5
 

- Memória: 8GB
 

- Armazenamento: 128 SSD
 

- Sistema Operacional: Mac OS Sierra

Tecnologias: Solr

Indexador: Apache Solr 7.2


Aplicação: Python3


Módulos:

  - PyMySQL

  - PySolr

  - Time

 

Banco de Dados: MySQL

Tecnologias: ElasticSearch

Indexador: ElasticSearch 5.x


Aplicação: Python3


Módulos:

  - elasticsearch-py
  - mysql-python

 

Banco de Dados: MySQL

Solr: Indexação

import pysolr
import pymysql.cursors
import time

connection = pymysql.connect(host="localhost",
                             user="root",
                             password="",
                             db="olx_ads",
                             charset="utf8mb4",
                             cursorclass=pymysql.cursors.DictCursor)

try:
  with connection.cursor() as cursor:
    sql = "SELECT title, description from ads"
    cursor.execute(sql)

    solr = pysolr.Solr('http://localhost:8983/solr/olx')
    l = []
    for row in cursor:
      h = {}
      h["title"] = row["title"]
      h["description"] = row["description"]
      l.append(h)
finally:
  connection.close()

solr.add(l)

Solr: Busca

import pysolr
import pymysql.cursors

connection = pymysql.connect(host="localhost",
                             user="root",
                             password="",
                             db="olx_ads",
                             charset="utf8mb4",
                             cursorclass=pymysql.cursors.DictCursor)

solr = pysolr.Solr('http://localhost:8983/solr/olx')

results = solr.search("*:*", rows=18020)

Solr: Busca

import pysolr
import pymysql.cursors

connection = pymysql.connect(host="localhost",
                             user="root",
                             password="",
                             db="olx_ads",
                             charset="utf8mb4",
                             cursorclass=pymysql.cursors.DictCursor)

solr = pysolr.Solr('http://localhost:8983/solr/olx')

results = solr.search("title:cavalo", rows=18020)

for result in results:
  print(format(result['title']))

Indexação

Armazenamento dos Índices

Solr

ElasticSearch

MB

MB

Docs

Docs

Busca Termo

Referência

Flax: Open Source Search Specialists

Conclusão

deck

By terciodejesus

deck

  • 640