如何在 Elasticsearch Python 客户端中查询包含撇号的字段

问题描述

我正在使用 Python 客户端通过 sql 查询查询 Elasticsearch 索引。我有一个包含城市名称的字段“城市”,其中可以包含字符串中的撇号字符,例如“N'Djamena”。 当我尝试查询此类字段时,我收到 Elasticsearch 解析错误。只是想知道如何在我的 where 子句中使用这样的字符串。

我在我的 python 代码中使用以下 sql 查询

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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...