6

我正在使用这段代码:

client.prepareSearch("test").addSort("dateUpdated", SortOrder.DESC)
            .setSearchType(SearchType.DFS_QUERY_AND_FETCH)
            .setIndices("reach")
            .setTypes(types)
            .setQuery(QueryBuilders.queryString(queryString))
            .setFrom(0).setSize(2).setExplain(true)
            .execute()
            .actionGet()

客户端是远程客户端。总共有 5 个结果,根据我上面的内容,我只希望返回两个结果。然而所有5个都回来了。如果我将大小设置为 0,则什么都不会返回(如预期的那样)我错过了什么?我觉得我对 from/size 的东西有误解。我的查询字符串只是“名称:*”。任何帮助是极大的赞赏!

4

1 回答 1

9

这是关于如何设置大小而不用担心分片数量的另一种解释。 http://elasticsearch-users.115913.n3.nabble.com/About-setsize-Java-API-td3216996.html

“查询和获取”是最快的搜索类型,但存在获取每个分片指定大小的问题。使用“查询然后获取”将解决问题。当没有指定时,它也是默认的搜索类型。

有关搜索类型的更多信息: http ://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-search-type.html

于 2014-01-29T10:23:08.117 回答