问题描述
我正在使用 Python 客户端通过 sql 查询来查询 Elasticsearch 索引。我有一个包含城市名称的字段“城市”,其中可以包含字符串中的撇号字符,例如“N'Djamena”。 当我尝试查询此类字段时,我收到 Elasticsearch 解析错误。只是想知道如何在我的 where 子句中使用这样的字符串。
query = """select OverallIndex from topcities where Country = 'Chad' and City = 'N'Djamena' """
cityindex = es.sql.query(body={'query': query})
以下是我从 Elasticsearch 收到的异常信息
elasticsearch.exceptions.RequestError: RequestError(400,'parsing_exception',"line 1:73: extraneous input 'Djamena' expecting {<EOF>,'AND','BETWEEN','GROUP','HAVING','IN','IS','LIKE','LIMIT','NOT','OR','ORDER','RLIKE',LIMIT_ESC,'=','<=>',NEQ,'<',' <=','>','>=','+','-','*','/','%','::',STRING}")
我什至尝试替换字段中的撇号字符以及如下所示的 where 参数,但我仍然遇到相同的异常
cityName = str("N'Djamena").replace("'","")
query = """select OverallIndex from topcities where Country = 'Chad' and replace(City,'') = '""" + cityName + """'"""
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)