Skip to content

Instantly share code, notes, and snippets.

View harshvb7's full-sized avatar

Harsh harshvb7

  • Cologne, Germany
View GitHub Profile
import datetime
import time
from django.conf import settings
import elasticsearch_dsl as es
from elasticsearch.helpers import bulk
from elasticsearch_dsl.connections import connections
ES_CONNECTIONS = {
'default': {
'hosts': [http://localhost:9200],
}
}
ES_INDEXES = {
'default': [
('users', 'some_app.indexes.Article'),
]
from pydoc import locate
from django.conf import settings
from django.core.management.base import BaseCommand
class Command(BaseCommand):
def __init__(self):
super(Command, self).__init__()

indexing the documents

@harshvb7
harshvb7 / fix.py
Last active September 13, 2018 12:41
def get_reserved_tickets(self, performance=None):
Offer = apps.get_model('events', 'Offer')
Order = apps.get_model('events', 'Order')
offers = Offer.objects.published().filter(
state=1,
ticket_price=self,
)
if performance:
offers = offers.filter(performance=performance)
pending_tickets = offers.filter(basket__state=0).distinct() \
for offer in basket.offer_set.published().exclude(ticket_price__state=13):
_voucher_ids = list(offer.ticket_price.ticket_vouchers_multiple.all().values_list('id', flat=True))
if (offer.ticket_price.ticket_voucher and offer.ticket_price.ticket_voucher != ticket_price) or (_voucher_ids and ticket_price.id not in _voucher_ids):
....
"""
Assume the structure of the document looks like this
{
"user": {
"first_name": "Foo",
"last_name": "Bar",
"age": "30",
"city": {
"id": 5,
from elasticsearch_dsl import connections, UpdateByQuery
def bulk_update_docs(ids, instance, fields_changed=[]):
"""
Arguments:
ids: {list} -- list of ids of documents we want to update
instance {Model instance} -- The updated user model object
fields_changed {list} -- list of the model fields changed
"""
# an example from elasticsearch-dsl docs
from elasticsearch_dsl import analyzer
html_strip = analyzer('html_strip',
tokenizer="standard",
filter=["standard", "lowercase", "stop", "snowball"],
char_filter=["html_strip"]
)
from elasticsearch_dsl import FacetedSearch, TermsFacet
class TweetSearch(FacetedSearch):
facets = {
# use bucket aggregations to define facets
'city': TermsFacet(field='user.city.name'),
}