gpt4 book ai didi

java - 如何检查 SearchRequestObject 的查询、过滤器和 aggs 参数是什么?

转载 作者:行者123 更新时间:2023-12-01 12:29:21 24 4
gpt4 key购买 nike

我正在开发一个基于 Elasticsearch 的应用程序。

我需要能够从 JSON 字符串构造 SearchRequestBuilder 对象。我可以使用 setSource 方法并传递完整的 JSON 查询对象作为参数来做到这一点。到目前为止一切顺利。

示例:(观察:我正在使用 Scala 中的 Java API)。

var builder = client.java.prepareSearch("logindex*")
.setSource("""
{
"query": {
"filtered": {
"query": {
"query_string": {
"query": ":mimeType:text\\/html"
}
},
"filter": {
"range": {
"datetime": {
"gte": "2014-09-18T00:56:00",
"lte": "2014-09-29T00:56:00"
}
}
}
}
}
}""")

但是我也确实需要能够“检查”以这种方式创建的对象,并查看它的查询是什么(这样我就可以确保用户没有尝试访问他/她不应该访问的东西等等)。理想情况下,我希望有像 getQueryBuilder 之类的方法。

// i know I can manipulate the previously created object like this:
builder.addAggregation(...)
// but can I also perhaps ask questions to the object?
// for instance
var query = builder.getQueryBuilder //or something like this
// and then find out what type of query it is and maybe turn it into a filtered query
// so I can limit what the users can view.

我希望 SearchRequestBuilder#internalBuilder 可能是我正在寻找的东西,但我无法从中获得任何有用的信息。

我希望我能够表达我的观点并让别人理解我自己。

最佳答案

我认为更好的方法是在将 JSON 设置为源之前简单地解析和验证/操作 JSON。有很多 scala JSON 解析库。我个人喜欢scala4s因为它有很好的 DSL 并且有很好的文档记录。它还具有 diffing该功能可能对您的情况特别有用。

关于java - 如何检查 SearchRequestObject 的查询、过滤器和 aggs 参数是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26069978/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com