Uso ElasticSearch come servizio di ricerca nel progetto Spring Web che utilizza Transport Client per comunicare con ES.Come costruire QueryBuilder da JSON DSL quando si utilizza l'API Java in ElasticSearch?
Mi chiedo se esiste un metodo che può costruire un QueryBuilder da un DSL JSON. ad esempio, convertire questa query bool DSL JSON in QueryBuilder.
{
"query" : {
"bool" : {
"must" : { "match" : {"content" : "quick"},
"should": { "match": {"content" : "lazy"}
}
}
}
ho bisogno di questo metodo perché devo ricevere input stringa bool dell'utente da web front-side, e analizzare questa stringa bool ad un QueryBuilder. Tuttavia non è adatto all'uso di QueryBuilders.boolQuery().must(matchQB).should(shouldQB).must_not(mustNotQB)
. Perché potremmo aver bisogno di più query must o non must.
Se esiste un metodo in grado di costruire un QueryBuilder da JSON DSL o esistono soluzioni alternative, sarà molto più semplice.
PS: Ho trovato due metodi che possono eseguire il wrapping di una stringa DSL su QueryBuilder per la ricerca ES. Uno è WrapperQueryBuilder, vedere i dettagli qui. http://javadoc.kyubu.de/elasticsearch/HEAD/org/elasticsearch/index/query/WrapperQueryBuilder.html Un altro è QueryBuilders.wrapperQuery (stringa DSL).
Grazie per la risposta, ho trovato due metodo in ES API che può avvolgere stringa DSL in QueryBuilder, uno è WrapperQueryBuilder, un altro è QueryBuilders.wrapperQuery() – Armstrongya
omettere la {"query":} la parte mi aiuta molto, grazie ancora per il tuo aiuto. – Armstrongya
Per coloro che utilizzano ES 5.0, questo non funziona più: https://discuss.elastic.co/t/set-source-in-searchrequestbuilder-with-es5-0-and-java-api/66870 –