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).

Antworten auf die Frage(2)

Ihre Antwort auf die Frage