python连接elasticsearc

发布时间:2019-09-12 07:55:41编辑:auto阅读(1425)

    # -*- 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)
    

关键字