微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Elasticsearch python 客户端中使用 SQL Access

如何解决在 Elasticsearch python 客户端中使用 SQL Access

我正在尝试使用 python 客户端进行弹性搜索,以使用 sql 访问进行弹性搜索查询索引。我想使用 sql 语法查询索引。我如何向elasticsearch 指定它必须读取sql 语法?

 def searchText(text):
    t1 = time.time()
    es=Elasticsearch([{'host':'localhost','port':9200}])
    res =  es.search(index='global_res_todos_acco',size=10000,request_timeout=60,body={'query':{
                                        "select * from global_res_todos_acco limit 100 where EntityList = " + text
                                    }
                          }
                     )
    GHList = []
    for hit in res['hits']['hits']:
            GHList.append(hit['_source']['Geohash7'])
    return(GHList)

我在控制台中收到以下错误

TypeError: 无法序列化 {'select * from global_res_todos_acco where EntityList = phuket indian food'}

解决方法

如果您使用的是 Python 客户端,则需要使用 es.sql.query() 函数:

es=Elasticsearch([{'host':'localhost','port':9200}])
es.sql.query(body={'query': 'select * from global_res_todos_acco...'})

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。