Slide 1

Slide 1 text

Sphinx and Elasticsearch

Slide 2

Slide 2 text

● elasticsearch-dsl==0.0.3 ● Sphinx==1.2.3 Which libraries to use?

Slide 3

Slide 3 text

def setup(app): app.connect( 'doctree-resolved', index ) Sphinx integration

Slide 4

Slide 4 text

from elasticsearch_dsl import DocType, String class Document(DocType): title = String(analyzer='snowball', boost=5) body = String(analyzer='snowball') docname = String(index='not_analyzed') class Meta: index = 'docs' Elasticsearch Document

Slide 5

Slide 5 text

import hashlib from elasticsearch_dsl.connections import connections connections.create_connection(hosts=['localhost']) def index(app, doctree, docname): title = app.env.titles[docname].astext() doc = Document( title=title, body=doctree.astext(), docname=docname, ) doc.id = hashlib.md5(docname.encode('utf-8')).hexdigest() doc.save() Index a Document

Slide 6

Slide 6 text

from elasticsearch_dsl.connections import connections connections.create_connection(hosts=['localhost']) search = Document.search() query = search.query( 'query_string', query='Migrations', fields=['title', 'body'], ).highlight_options(order='score').highlight('body') results = query.execute() Search

Slide 7

Slide 7 text

>>> for hit in results: ... print(hit.title) Writing database migrations Writing your first Django app, part 1 Django documentation FAQ: Databases and models System check framework ... Using the hits

Slide 8

Slide 8 text

Thank you! markusholtermann.eu @m_holtermann github.com/MarkusH