我正在从事一个springboot项目,在ElasticSearch方面遇到了一些问题。 用户将在数据库中放入一些JSON格式的elasticsearch DSL查询字符串,对我来说它们是黑盒。我需要做的是获取查询字符串并使用它们在elasticsearch中搜索信息
在python中,DSL可以是如下参数:
body = {
"query":{
"match_all":{}
}
}
es.search(index="my_index",doc_type="test_type",body=body)
如何在不知道字符串细节的情况下执行搜索,而只使用Java中的JSON格式查询
我相信在现代ES客户端库中有两种方法可以做到这一点。我自己也没试过,但第一个似乎很简单
第一个是使用low-level client:
似乎只要将JSON作为字符串推送到setJsonEntity就足够了,您已经设置好了
第二种方法是使用high level client,这很棘手,尽管它可以提供更健壮的API。您可能知道,elasticsearch有XContent的概念,即对不同格式(包括JSON)进行序列化/反序列化。理论上,可以创建JsonXContentParser,然后可以使用它实例化SearchSourceBuilder:
问题只是JsonXContentParser需要实例化大量参数,我不知道如何正确创建这些依赖项
相关问题 更多 >
编程相关推荐