QuerysetΒΆ
Creating a connection:
>>> from pyes.queryset import generate_model
>>> model = generate_model("myindex", "mytype")
Filtering:
>>> results = model.objects.all()
>>> len(results)
3
>>> results = model.objects.filter("name", "joe")
>>> len(results)
1
>>> results = model.objects.filter(uuid="33333")
>>> len(results)
1
>>> results = model.objects.filter(position=1).filter(position=3)
>>> len(results)
0
>>> results = model.objects.filter(position__gt=1, position__lt=3)
>>> len(results)
1
>>> results.count()
1
>>> [r.position for r in results]
[2]
>>> results = model.objects.exclude(position__in=[1, 2])
>>> len(results)
1
>>> results.count()
1
Retrieve an item:
>>> item = model.objects.get(position=1)
>>> item.position
1
>>> item = model.objects.get(position=0)
raise DoesNotExist
Ordering:
>>> items = model.objects.order_by("position")
>>> items[0].position
1
>>> items = model.objects.order_by("-position")
>>> items[0].position
3
Get or create:
>>> item, created = model.objects.get_or_create(position=1, defaults={"name": "nasty"})
>>> created
False
>>> position
1
>>> item.get_meta().id
"1"
>>> item, created = model.objects.get_or_create(position=10, defaults={"name": "nasty"})
>>> created
True
>>> position
10
>>> item.name
"nasty"
Returns values:
>>> values = list(model.objects.values("uuid", "position"))
>>> len(values)
3
>>> list(values)
[{u'position': 1, u'uuid': u'11111'},{u'position': 2, u'uuid': u'22222'},{u'position': 3, u'uuid': u'33333'}]
>>> values = list(model.objects.values_list("uuid", flat=True))
>>> len(values)
3
>>> list(values)
[u'11111', u'22222',u'33333']
>>> model.objects.dates("date", kind="year")
>>> len(values)
1
>>> list(values)
[datetime(2012, 1, 1, 1, 0)]
facets = model.objects.facet("uuid").size(0).facets
uuid_facets=facets["uuid"]
self.assertEqual(uuid_facets["total"], 3)
self.assertEqual(uuid_facets["terms"][0]["count"], 1)
Faceting counting (can be concatenated).
>>> facets = model.objects.facet("uuid").size(0).facets
>>> facets["uuid"]["total"]
3
>>> facets["uuid"][0]["count"]
1
More examples are available in test_queryset.py in tests dir.