如何在弹性搜索查询字符串中转义诸如“ AND”,“ OR”之类的特殊单词

时间:2018-11-06 00:48:47

标签: elasticsearch elasticsearch-dsl

我正在尝试构建一个Elasticsearch查询字符串查询。提到必须保留转义字符或特殊字符。

https://www.elastic.co/guide/en/elasticsearch/reference/2.1/query-dsl-query-string-query.html#_reserved_characters

  

保留的字符为:+-= && || > <! (){} [] ^“〜*?:\ /

未能正确转义这些特殊字符可能会导致语法错误,从而阻止查询运行。”

我的问题是:我该如何转义“ AND”或“ OR”之类的“特殊词”。例如,我想获取与文本“ NOW OR NEVER”(在所有/任何字段上)匹配且状态为“ active”或“ pending”的文档。下面的查询似乎不起作用(OR未被弹性搜索转义)。

NOW \OR NEVER status:(active OR pending) 

1 个答案:

答案 0 :(得分:1)

您可以尝试将文本用双引号引起来:

GET your_index/_search?q=status:(active OR pending) AND "NOW OR NEVER"