-
Notifications
You must be signed in to change notification settings - Fork 19
/
example.py
152 lines (116 loc) · 3.26 KB
/
example.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
# coding: utf-8
import time
import datetime
from elasticsearch import Elasticsearch
from esengine import (
Document, StringField, IntegerField, BooleanField,
FloatField, GeoPointField, DateField
)
class ExampleDoc(Document):
_index = 'esengine_test'
_doctype = 'example'
_es = Elasticsearch()
name = StringField()
age = IntegerField()
active = BooleanField()
weight = FloatField()
location = GeoPointField(mode="array")
birthday = DateField(date_format="%Y-%m-%d")
city = StringField()
ExampleDoc.put_mapping()
########################################################################
instances = []
gonzo = ExampleDoc(
id=123456,
name="Gonzo",
age="2",
active=True,
weight="30.5",
location=[0.345, 1.456],
city="Tunguska"
)
gonzo.birthday = '2015-01-01'
gonzo.save()
instances.append(gonzo)
mongo = ExampleDoc(
id=789100,
name="Mongo",
age="3",
active=False,
weight="10.5",
location=[0.342, 2.456],
birthday=datetime.datetime.today(),
city="Tunguska"
)
mongo.save()
instances.append(mongo)
########################################################################
for instance in instances:
print instance
print "get by id=", instance.id, ExampleDoc.get(id=instance.id)
print "Filter by name=", instance.name, [
item.to_dict() for item in ExampleDoc.filter(name=instance.name, size=2)
]
print "Filter by name='" + instance.name + "', active=", instance.active, [
item.to_dict()
for item in ExampleDoc.filter(name="Gonzo", active=instance.active, size=2)
]
QUERY = {
"query": {
"bool": {
"must": [
{"match": {"name": instance.name}}
]
}
}
}
print "Search by query:", QUERY, [
item.to_dict()
for item in ExampleDoc.search(QUERY)
]
print "#" * 120
for instance in instances:
print instance.name, "Old age:", instance.age
instance.age += 1
print instance.name, "New age:", instance.age
ExampleDoc.save_all(instances)
for instance in instances:
print instance.name, "Saved age is now:", instance.age
for instance in instances:
print "{i.name} activation is {i.active}".format(i=instance)
########################################################################
time.sleep(2)
print "updating turning activations to True"
QUERY = {
"query": {
"bool": {
"must": [
{"match": {"city": "Tunguska"}}
]
}
}
}
print "for", QUERY
results = ExampleDoc.search(QUERY)
for res in results:
print res
results.update(active=True)
results.reload()
for res in results:
print "{i.name} activation is {i.active}".format(i=res)
print "Will update the names to Jonson"
# results.update(name="Jonson")
# results.reload()
# for res in results:
# print "{i.name} activation is {i.active}".format(i=res)
# print "Updating using Model.update_all"
# ExampleDoc.update_all(results, city="Itapopoca")
# time.sleep(1)
# results = ExampleDoc.filter(city="Itapopoca")
# for res in results:
# print "{i.name} city is {i.city}".format(i=res)
print "All documents"
for doc in ExampleDoc.all():
print doc.to_dict()
#print "Deleting everything"
#results.delete()