0

こんにちは、gsp 検索クエリで二重引用符をエスケープしようとしていますが、これはこれまでのところ Elasticsearch に渡されています。

<input id="q" name="q" type="text" class="large" value="${params?.q?.encodeAsHTML()}" ..

しかし、webapps 検索フィールドに移動して「abc」のようなクエリを使用すると、主にログファイルに大量の例外が発生します。

 org.apache.lucene.queryParser.ParseException: Cannot parse '("abc) AND recstatus:"public"': Lexical error at line 1, column 30.  Encountered: <EOF> after : ""

2013-03-01 11:35:06,874 [New I/O  worker #3] DEBUG search.type  - [Helleyes] [some_index][3], node[BZH5bHO8RX2va-HVpTDEng], [P], s[STARTED]: Failed to execute 
[org.elasticsearch.action.search.SearchRequest@2f6a3595]
org.elasticsearch.transport.RemoteTransportException: [Lasher][inet[/xxx.xxx.x.xxx:9300]][search/phase/query]
Caused by: org.elasticsearch.search.SearchParseException: [some_index][3]: from[0],size[20]: Parse Failure [Failed to parse source [:)
^Eom@0<83>sizeA20<84>queryery_string"abc) AND recstatus:"public"<8f>analyze_wildcard#ields䴩tle]]

など.. 何か提案はありますか?

4

2 に答える 2

4

問題が見つかりました...

config.groovy には次のフラグが設定されています。

grails.views.default.codec = "none"

これにより、gsp ページ内のすべてのコードが上書きされます。

このフラグを次のいずれかに設定できます。

grails.views.default.codec = "html"

または個々の gsp ファイルをオーバーライドします。

于 2013-03-01T12:57:32.357 に答える