Wie kann QueryBuilder aus JSON DSL erstellt werden, wenn die Java-API in ElasticSearch verwendet wird?
Ich verwende ElasticSearch als Suchdienst in Spring Web-Projekten, die Transport Client für die Kommunikation mit ES verwenden.
Ich frage mich, ob es eine Methode gibt, die einen QueryBuilder aus einem JSON-DSL erstellen kann. Konvertieren Sie beispielsweise diese Bool-Abfrage DSL JSON in einen QueryBuilder.
{
"query" : {
"bool" : {
"must" : { "match" : {"content" : "quick"},
"should": { "match": {"content" : "lazy"}
}
}
}
Ich benötige diese Methode, da ich die Bool-Zeichenfolge des Benutzers von der Vorderseite des Webs empfangen und diese Bool-Zeichenfolge in einem QueryBuilder analysieren muss. Es ist jedoch nicht angebracht, @ zu verwendeQueryBuilders.boolQuery().must(matchQB).should(shouldQB).must_not(mustNotQB)
. Weil wir möglicherweise mehrere Muss- oder Nicht-Muss-Abfragen benötigen.
Wenn es eine Methode gibt, die einen QueryBuilder aus JSON DSL erstellen kann, oder wenn es alternative Lösungen gibt, ist dies viel einfacher.
PS: Ich habe zwei Methoden gefunden, mit denen ein DSL-String in einen QueryBuilder für die ES-Suche eingebunden werden kann. Einer ist WrapperQueryBuilder, siehe Details hier.http: //javadoc.kyubu.de/elasticsearch/HEAD/org/elasticsearch/index/query/WrapperQueryBuilder.htm Ein anderer ist QueryBuilders.wrapperQuery (String DSL).