Como construir QueryBuilder a partir de JSON DSL ao usar a API Java no ElasticSearch?
Estou usando o ElasticSearch como um serviço de pesquisa no projeto Spring Web que usa o Transport Client para se comunicar com o ES.
Gostaria de saber se existe um método que pode construir um QueryBuilder a partir de um JSON DSL. por exemplo, converta essa consulta booleana DSL JSON em um QueryBuilder.
{
"query" : {
"bool" : {
"must" : { "match" : {"content" : "quick"},
"should": { "match": {"content" : "lazy"}
}
}
}
Eu preciso desse método porque tenho que receber a entrada de string booleana do usuário pela frente da Web e analisar essa string booleana em um QueryBuilder. No entanto, não é adequado usarQueryBuilders.boolQuery().must(matchQB).should(shouldQB).must_not(mustNotQB)
. Porque podemos precisar de várias consultas obrigatórias ou não.
Se existe um método que pode construir um QueryBuilder a partir do JSON DSL ou se existem soluções alternativas, será muito mais fácil.
PS: Eu encontrei dois métodos que podem agrupar uma String DSL em uma pesquisa QueryBuilder for ES. Um éWrapperQueryBuilder, veja detalhes aqui.http://javadoc.kyubu.de/elasticsearch/HEAD/org/elasticsearch/index/query/WrapperQueryBuilder.html Outro éQueryBuilders.wrapperQuery(String DSL).