import pyes
conn = pyes.ES(['127.0.0.1:9200'])#串連es
def creat():
#conn.indices.create_index('test-index')#建立一個索引
#定義索引儲存結構
mapping = { u'id': {'boost': 1.0,
'index': 'not_analyzed',
'store': 'yes',
'type': u'string',
"term_vector" : "with_positions_offsets"},
u'user_id': {'boost': 1.0,
'index': 'not_analyzed',
'store': 'yes',
'type': u'string',
"term_vector" : "with_positions_offsets"},
u'nick': {'boost': 1.0,
'index': 'analyzed',
'store': 'yes',
'type': u'string',
"term_vector" : "with_positions_offsets"},
u'city': {'boost': 1.0,
'index': 'analyzed',
'store': 'yes',
'type': u'string',
"term_vector" : "with_positions_offsets"},
}
conn.indices.put_mapping("test-type1", {'properties':mapping}, ["test-index"])#定義test-type
conn.indices.put_mapping("test-type2", {"_parent" : {"type" : "test-type1"}}, ["test-index"])#從test-type繼承
#插入索引資料
#{"id":"1", "user_id":"u1", "nick":u"壓力很大", "city":u"成都"}: 文檔資料
#test-index:索引名稱
#test-type: 類型
#1: id 註:id可以不給,系統會自動產生
conn.index({"id":"1", "user_id":"u1", "nick":u"美女很多", "city":u"成都"}, "test-index", "test-type1", 1)
conn.index({"id":"2", "user_id":"u2", "nick":u"壓力很小", "city":u"北京"}, "test-index", "test-type1",2)
conn.index({"id":"3", "user_id":"u3", "nick":u"沒有壓力", "city":u"成都"}, "test-index", "test-type1",3)
conn.index({"id":"4", "user_id":"u4", "nick":u"東方明珠", "city":u"上海"}, "test-index", "test-type1",4)
conn.index({"id":"5", "user_id":"u5", "nick":u"環境優美", "city":u"深圳"}, "test-index", "test-type1",5)
conn.index({"id":"6", "user_id":"u6", "nick":u"城市很髒", "city":u"西安"}, "test-index", "test-type1",6)
conn.default_indices=["test-index"]#設定預設的索引
conn.indices.refresh()#重新整理以獲得最新插入的文檔
def query():
reload(pyes)
#查詢nick中包含壓力的記錄
#q = StringQuery(u"壓力",'nick')
q = pyes.query.MatchQuery('nick',u"壓力很小",type="phrase_prefix")
#q = pyes.query.MatchQuery('nick',u"壓力很小")
#q1 = pyes.query.MatchQuery("user_id","u1")
#q2 = pyes.query.MatchQuery("id","6")
#q = pyes.query.BoolQuery(should=[q1, q2])
results = conn.search(q)
for r in results:
print u"查詢nick中包含壓力的記錄", r['nick'], r['city'], r['user_id']
return r['user_id']
#if __name__ == '__main__':
#creat()
query()