Используйте SQL Access в клиенте Python Elasticsearch

Я пытаюсь использовать клиент python для эластичного поиска, чтобы запросить индекс, используя доступ SQL для эластичного поиска. Я хочу запросить индекс, используя синтаксис sql. Как мне указать elasticsearch, что он должен читать SQLsyntax?

 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)

я получаю следующую ошибку в консоли

Ошибка типа: невозможно сериализовать {'выберите * из global_res_todos_acco, где EntityList = индийская еда на Пхукете'}


person sachin chauhan    schedule 07.01.2021    source источник


Ответы (1)


Если вы используете клиент Python, вам нужно использовать функцию es.sql.query():

es=Elasticsearch([{'host':'localhost','port':9200}])
es.sql.query(body={'query': 'select * from global_res_todos_acco...'})
person Val    schedule 07.01.2021
comment
спасибо Вал. Работает как шарм. - person sachin chauhan; 07.01.2021
comment
Круто, рад, что сработало! - person Val; 07.01.2021