【问题标题】:Elasticsearch: search and show results to users, Scroll APIElasticsearch:搜索并向用户显示结果,Scroll API
【发布时间】:2017-01-13 07:33:03
【问题描述】:

我是 Elasticsearch 的新手。我对 Scroll API 感到困惑 http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-scroll.html

滚动不是针对实时用户请求,而是针对 处理大量数据,例如为了重新索引 将一个索引的内容转换为具有不同配置的新索引。

我需要的是:

  1. 用户键入搜索短语并单击搜索按钮
  2. 程序在 Elasticsearch 中搜索结果的第一页
  3. 向用户显示结果的第一页,如果他单击“下一页”或跳转到另一个后面的页面,程序会显示该页面的结果。

以下是我找到的两种方式:

SearchResponse scrollResp = client.prepareSearch("book")
        .setTypes("children")
        .setQuery(query)
        .setSize(20).execute().actionGet();  

SearchResponse scrollResp = client.prepareSearch("book")
        .setTypes("children")
        .setSearchType(SearchType.SCAN)
        .setScroll(new TimeValue(60000))
        .setQuery(query)
        .setSize(20).execute().actionGet();  

我应该使用哪个?

感谢和问候!

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    您应该使用fromsize 参数来控制分页,from 是开始索引,size 是每页的项目数。

    SearchResponse scrollResp = client.prepareSearch("book")
        .setTypes("children")
        .setQuery(query)
        .setFrom(20)
        .setSize(20).execute().actionGet();  
    

    http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-from-size.html

    【讨论】:

    • 丹,感谢您的信息。我会照你说的做。一个简单的问题:我不应该 setSearchType 或 setScroll,对吗?
    • 用户搜索请求不需要扫描和滚动,当您想要处理大量数据时应该使用它,即重新索引 - 所以您不需要setSearchType 或@987654328 @.
    • 非常感谢您的确认!
    猜你喜欢
    • 2017-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-10
    • 1970-01-01
    • 1970-01-01
    • 2017-12-30
    • 1970-01-01
    相关资源
    最近更新 更多