0

私はElasticsearchの最新バージョンに関する質問があります。私は、次のJava APIの検索を使用していた以前のバージョンまでElasticsearch 5.x setQuery非推奨

SearchRequestBuilder request = client.prepareSearch(index).setSource(jsonQuery) 

は今setSourceが廃止され、代わりにはsetQuery(QueryBuilder)を使用することをお勧めします。

私の質問は以下の通りです。前と同じようにjsonクエリ全体を渡すことは可能ですか?高度な

感謝[編集]

これは私が使っていたクエリ構文であり、それが可能であれば私は維持したいと思います:

"{" 
+ "\"query\": {" 
+ " \"bool\": {" 
+ "  \"filter\": { ... }" 
+ "  }" 
+ " }," 
+ " \"fields\": [" 
+ " \"xxx\"," 
+ " ]," 
+ " \"size\": 1000" 
+ "}"; 

を私は分割する必要はありませんサイズ、ボディ、フィールド、サイズは

setQuery(QueryBuilders.wrapperQuery(jsonQuery)).setSize(size).storedFields(fields) 

答えて

0

です。QueryBuilders.wrapperQuery()これを実現するためにWrapperQueryBuilderのインスタンスを作成します。

SearchRequestBuilder request = client.prepareSearch(index) 
    .setQuery(QueryBuilders.wrapperQuery(jsonQuery)) 
    .setSize(1000) 
    .fields("xxx1", "xxx2"); 
+0

ありがとうございます。私はすでにこの実装を試みましたが、このようにして私はボディを定義しているので、jsonQueryからの格納されたフィールドを含めることができません。 – Ribas

+0

私は理解していますか、あなたは精緻化することができますか?以前に行っていたクエリとこのソリューションではうまくいかないクエリで質問を更新してください。 – Val

+0

あなたの質問を更新してコードを書式化してください。読みやすく読みやすくなります。 – Val