Tôi đang sử dụng ElasticSearch làm dịch vụ tìm kiếm trong dự án Spring Web sử dụng Transport Client để giao tiếp với ES.Làm thế nào để xây dựng QueryBuilder từ JSON DSL khi sử dụng Java API trong ElasticSearch?
Tôi tự hỏi nếu có tồn tại một phương pháp có thể xây dựng một QueryBuilder từ một DSL JSON. ví dụ, chuyển đổi truy vấn bool DSL DSL này thành QueryBuilder.
{
"query" : {
"bool" : {
"must" : { "match" : {"content" : "quick"},
"should": { "match": {"content" : "lazy"}
}
}
}
Tôi cần phương pháp này vì tôi phải nhận chuỗi đầu vào bool của người dùng từ phía trước web và phân tích chuỗi bool này thành QueryBuilder. Tuy nhiên nó không phù hợp để sử dụng QueryBuilders.boolQuery().must(matchQB).should(shouldQB).must_not(mustNotQB)
. Bởi vì chúng tôi có thể cần một số phải hoặc không phải truy vấn.
Nếu tồn tại một phương pháp có thể xây dựng QueryBuilder từ JSON DSL hoặc có giải pháp thay thế, nó sẽ dễ dàng hơn nhiều.
PS: Tôi đã tìm thấy hai phương pháp có thể quấn một chuỗi DSL vào một QueryBuilder cho tìm kiếm ES. Một là WrapperQueryBuilder, xem chi tiết tại đây. http://javadoc.kyubu.de/elasticsearch/HEAD/org/elasticsearch/index/query/WrapperQueryBuilder.html Một số khác là QueryBuilders.wrapperQuery (Chuỗi DSL).
Cám ơn câu trả lời của bạn, tôi đã tìm thấy hai phương pháp trong ES API có thể quấn chuỗi DSL để QueryBuilder, một là WrapperQueryBuilder, một là QueryBuilders.wrapperQuery() – Armstrongya
bỏ qua phần {"truy vấn":} giúp tôi rất nhiều, một lần nữa nhờ sự giúp đỡ của bạn. – Armstrongya
Đối với những người bạn sử dụng ES 5.0, điều này không còn hoạt động: https://discuss.elastic.co/t/set-source-in-searchrequestbuilder-with-es5-0-and-java-api/66870 –