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