当前位置: 首页 > 知识库问答 >
问题:

如何使用elasticsearch获取搜索结果?

顾正初
2023-03-14

我使用logstash将我的mysql表数据保存到elasticsearch中。现在我想使用特定字段从elasticsearch获取数据。我可以使用id获取数据,但无法使用其他字段检索数据。

我正在使用elasticsearch 5.6.12和Spring boot 2.0

searchcontroller.java

    @GetMapping("/view/{id}")
    public SearchResponse view(@PathVariable final String id) {
        SearchResponse response = client.prepareSearch("user_detail").setTypes("user")
                .setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
                .setQuery(QueryBuilders.termQuery("first_name", id)).setFrom(1).setSize(4)
                .setExplain(true).execute().actionGet() ;
        SearchHit[] results = response.getHits().getHits();

        System.out.println("Current results: " + results.length);
        for (SearchHit hit : results) {
            System.out.println("------------------------------");
            Map<String, Object> result = hit.getSource();
            System.out.println(result);
        }
        return response;
    }

我想用first_name搜索,但什么都没有显示。我在这里做错了什么?

共有1个答案

澹台展鹏
2023-03-14

我的问题解决了

    @GetMapping("/view/{id}")
    public Map<String, Object> view(@PathVariable final String id) {
    System.out.println("id="+id);
    SearchResponse response = client
    .prepareSearch("user_detail").setTypes("user").setQuery(QueryBuilders.matchQuery("first_name", id))
    .setExplain(true)
    .execute().actionGet();

    SearchHit[] results = response.getHits().getHits();

    System.out.println("Current results: " + results.length);
    for (SearchHit hit : results) {
        System.out.println("------------------------------");
        Map<String, Object> result = hit.getSource();
        System.out.println("result="+ result);
        return result;
    }
    return null;
}
 类似资料:
  • 当跨多个索引进行搜索时,elasticsearch的“多重匹配”查询将返回搜索结果中的索引名称。 响应包含字段,该字段告诉结果来自的索引 spring-data-elasticsearch中用于的类是和具有字段、、用于获取与elasticsearch查询相似的数据。但它不包含用于存储字段信息的相关字段。 还支持吗?我需要根据哪个客户端应用程序将生成一些URL发送搜索命中类型(name)。 这是我使

  • 我试图使用selenium webdriver从给定搜索结果URL的IEEE Xplore搜索中提取搜索结果计数。我没有从下面的代码中得到任何错误,但我不确定如何从这里开始。

  • 问题内容: 首先创建一些示例数据(e1,e2,e3是类型,而test是索引名称): 现在我的问题是:我怎样才能仅获得这两个数据?删除结果中具有相同ID的重复数据。 问题答案: 首先,您将需要搜索多个索引。 然后,在结果上删除重复的ID。

  • 我做了一个elasticsearch查询,以按县查找成员页面。 总体目标是获取查询返回的所有memberId,并将它们用作另一个查询的搜索条件。(实体“成员”有一个名为“memberId”的字段) 我尝试使用. getContent获取页面内容(以便从页面获取memberId字段)... 但是我不知道我到底在用. Collection做什么,它返回的不仅仅是memberId 下面是sysout中显

  • 问题内容: 我最近开始使用ElasticSearch,但似乎无法让它搜索单词的一部分。 示例:我有我的ouchdb中的三个文档,在ElasticSearch中建立了索引: 所以现在,我要搜索包含“ Doe”的所有文档 那不会返回任何点击。但是如果我寻找 它确实返回一个文档(John Doeman)。 我尝试将不同的分析器和不同的过滤器设置为索引的属性。我也尝试使用完整的查询(例如: ),但似乎没有

  • 问题内容: 我在Elasticsearch中有一个带有value的字段。当我要使用查询字符串“ cgn:4189”进行搜索时,没有结果。我尝试像“ cgn:4189”那样逃脱冒号,但是我有语法错误。我不知道该怎么做。 结果: 和 结果: 你能帮我吗? 问题答案: 尝试以下查询,看看它是否适合您: 这是一些我用来测试的Sense代码: http://sense.qbox.io/gist/1c9096