我可能沒有正確理解這一點,但是當使用查詢字符串查詢搜索我的索引時,它指出需要轉義保留字符或特殊字符。保留字符是否需要在Elasticsearch查詢中轉義?
保留的字符是:+ - = & & || > <! (){} [] ^「〜*?:\/
未能正確轉義這些特殊字符可能會導致語法錯誤,從而阻止您的查詢運行。
目前我的索引不標記特殊字符,因爲我只使用標準分析器,但是我確實在所有字符串字段上都進行了分析和未分析。
所以,如果我有這些字符串索引:
quick fox
brown fox
當我運行一個查詢:
{
"query_string" : {
"query" : "(quick OR brown) AND fox",
}
}
正確的結果回來。但是,基於保留字符文檔,查詢字符串查詢中是否需要使用括號「(」和「)」進行轉義?對於何時轉義保留字符以及何時不轉到查詢中,我有點困惑。
是否需要?:是
{
"query_string" : {
"query" : "\(quick OR brown\) AND fox",
}
}
我知道,括號用於分組是很有意義不要逃避它們。但是在Elasticsearch的查詢中總是需要保留哪些保留字符?只有當保留的字符是操作符時?
這就是我想在初期,一些保留的字符會拋出一個解析異常,例如:如果查詢字符串爲「etc/elasticsearch」,則會拋出異常。這就是爲什麼我不清楚需要爲搜索查詢轉義哪些字符,並且不會影響搜索結果。 – Lumpy
在這種情況下,您需要像這樣'etc \/elasticsearch'來轉義它,因爲正斜槓是您正在查詢的值的一部分,而不是查詢語法的一部分 – Val
我想這正是我試圖找到的。哪些保留字符需要轉義或哪些可以通過。 – Lumpy