Я использую ElasticSearch в качестве службы поиска в проекте Spring Web, который использует Transport Client для связи с ES.Как построить QueryBuilder из JSON DSL при использовании Java API в ElasticSearch?
Мне интересно, существует ли метод, который может построить QueryBuilder из JSON DSL. например, преобразовать этот запрос bool DSL JSON в QueryBuilder.
{
"query" : {
"bool" : {
"must" : { "match" : {"content" : "quick"},
"should": { "match": {"content" : "lazy"}
}
}
}
мне нужен этот метод, потому что я должен получить пользователь ввод BOOL строки из веба передней стороны, и разобрать эту булеву строку в QueryBuilder. Однако это не подходит для использования QueryBuilders.boolQuery().must(matchQB).should(shouldQB).must_not(mustNotQB)
. Потому что нам могут потребоваться несколько запросов или не должны запрашивать.
Если существует способ, который может построить QueryBuilder из JSON DSL или существуют альтернативные решения, это будет намного проще.
PS: Я нашел два метода, которые могут обернуть DSL-строку в QueryBuilder для поиска ES. Один из них - WrapperQueryBuilder, см. Подробности здесь. http://javadoc.kyubu.de/elasticsearch/HEAD/org/elasticsearch/index/query/WrapperQueryBuilder.html Другое QueryBuilders.wrapperQuery (String DSL).
Спасибо за ваш ответ, я нашел два метод в ES API, который может обернуть строку DSL в QueryBuilder, другой - WrapperQueryBuilder, другой - QueryBuilders.wrapperQuery() – Armstrongya
опустить часть {"query::}, которая мне очень помогает, еще раз спасибо за вашу помощь. – Armstrongya
Для тех из вас, кто использует ES 5.0, это больше не работает: https://discuss.elastic.co/t/set-source-in-searchrequestbuilder-with-es5-0-and-java-api/66870 –