python连接elasticsearch获取数据
原文:https://blog.csdn.net/ziqiaowang/article/details/54972279
-
# -*- encoding: utf-8 -*-
-
import sys
-
import json
-
from elasticsearch import Elasticsearch
-
reload(sys)
-
sys.setdefaultencoding("utf8")
-
######################################################
-
# 用于连接ES环境,查询检索小区信息,返回排名靠前10的小区信息。
-
# http_auth=('es_username', 'es_passwd')
-
# es_search(city,name):es_search(深圳,登科花园)
-
######################################################
-
es = Elasticsearch(
-
['xxx.xxx.xxx.xxx'],
-
http_auth=('elastic', 'passwd'),
-
port=9200
-
)
-
def es_search(city, name):
-
query_json = {
-
"bool": {
-
"must": {
-
"term": {
-
"city": city
-
}
-
},
-
"must_not":{
-
"term": {
-
"base_inf.kind":'商铺'
-
}
-
},
-
"should": [
-
{
-
"match": {
-
"message": name
-
}
-
}
-
]
-
}
-
}
-
source_arr = ["name",
-
"Long_lat.lon",
-
"Long_lat.lat",
-
"detail_inf",
-
"avg_price",
-
"base_inf.kind",
-
"base_inf.build_time"]
-
res = es.search(index="st_soufang", body={"query": query_json, "_source": source_arr}) # 获取所有数据
-
# 获取第一条数据,得分最高。
-
top_10_recodes = res['hits']['hits']
-
# print json.dumps(top_10_recodes)
-
return [top_10_recodes]
-
#
-
# for item in best_recode:
-
# if item != '_source':
-
# print item,best_recode[item]
-
if __name__ == "__main__":
-
# 测试单例
-
city = '深圳'
-
name = '东方星大厦'
-
es_search(city, name)