当前位置: 首页 > 面试题库 >

在ElasticSearch中获取SearchResponse的结果

韦修文
2023-03-14
问题内容

我正在尝试使用ES作为MongoDB的索引。我已经成功地将它们集成在一起,但是我发现搜索API相当复杂且令人困惑。Java API也不太有用。

我可以找到完全匹配的内容,但是如何获得此结果?这是我的代码:

Node node = nodeBuilder().node();

SearchResponse sr = node.client().prepareSearch()
        .addAggregation(
            AggregationBuilders.terms("user").field("admin2san")
            .subAggregation(AggregationBuilders.terms("SPT").field("64097"))
        )
        .execute().actionGet();

SearchHit[] results = sr.getHits().getHits();
List<Firewall> myfirewall = results.getSourceAsObjectList(Firewall.class);
for (Firewall info : myfirewall) {
       System.out.println("search result is " + info);
}

问题答案:

我不确定我是否理解您的问题。

如果要根据示例打印searchResponse的结果,则应为以下内容:

SearchHit[] results = sr.getHits().getHits();
for(SearchHit hit : results){
    String sourceAsString = hit.getSourceAsString();
    if (sourceAsString != null) {
        Gson gson = new GsonBuilder().setDateFormat(dateFormat)
                .create();
        System.out.println( gson.fromJson(sourceAsString, Firewall.class));
    }
}

我正在使用Gson将Json响应转换为FireWall(POJO)。

我希望这就是您想要的。



 类似资料:
  • 我有一个索引(名称:“index1”)指向ElasticSearch中的多个文档。 文档的格式(json)是- 下面是映射- 我在ES查询中哪里做错了?

  • 问题内容: 我想将elasticsearch搜索结果转换为Json Object。我还没有找到任何直接转换的正确方法。 有什么方法可以将ElasticSearch响应转换为Json对象吗? 问题答案: 在Java中,您可以直接将SearchResponse转换为JSONObject。以下是方便的代码。

  • 我正在使用TransportClient创建elasticsearch客户端实例,代码如下。 问题有时是代码正在工作并索引数据,但有时我会遇到以下问题。 14-08-2014 12:49:07846调试[elasticsearch[节点客户端][传输客户端工作者][T#8]{新I/O工作者#8}]组织。弹性搜索。常见的登录中。log4j。Log4jESLogger 104-[node client

  • 我使用logstash将我的mysql表数据保存到elasticsearch中。现在我想使用特定字段从elasticsearch获取数据。我可以使用id获取数据,但无法使用其他字段检索数据。 我正在使用elasticsearch 5.6.12和Spring boot 2.0 searchcontroller.java 我想用first_name搜索,但什么都没有显示。我在这里做错了什么?

  • Mongo在upserts上返回WriteResult: 有什么办法可以从pymongo访问这些字段吗?我需要这个,因为更新总是在pymongo中不返回任何内容,我想知道我正在查询的文档是否被修改,或者即使它存在而不进行其他查询。你能告诉我如何做到这一点吗? 我知道以前有人问过这个问题,但那是几年前的事了,我在谷歌上找到的所有东西都没有一个例子。 既然这样,有没有办法从upsert的结果中获取文档

  • 问题内容: 我的应用程序正在使用此脚本来增强索引中的最新项目: 它是用MVEL编写的,但是从1.3开始,对于Groovy,不推荐使用MVEL。脚本现在引发此错误: 对我来说,这听起来像Groovy中获取毫秒级时间戳的功能不同。我尝试了,但是又给出了另一个错误,说它不支持导入。 那么我该如何修复该功能以与Groovy一起使用? 问题答案: 正如您已经发现的那样,您需要用Groovy而不是MVEL重写