in pkg/espoll/search.go [34:72]
func (es *Client) SearchIndexMinDocs(
ctx context.Context,
min int, index string,
query json.Marshaler,
opts ...RequestOption,
) (SearchResult, error) {
var result SearchResult
req := es.NewSearchRequest(index)
req.ExpandWildcards = "open,hidden"
if min > 10 {
// Size defaults to 10. If the caller expects more than 10,
// return it in the search so we don't have to search again.
req = req.WithSize(min)
}
if query != nil {
req = req.WithQuery(query)
}
opts = append(opts, WithCondition(AllCondition(
result.Hits.MinHitsCondition(min),
result.Hits.TotalHitsCondition(req),
)))
// Refresh the indices before issuing the search request.
refreshReq := esapi.IndicesRefreshRequest{
Index: strings.Split(",", index),
ExpandWildcards: "all",
}
rsp, err := refreshReq.Do(ctx, es.Transport)
if err != nil {
return result, fmt.Errorf("failed refreshing indices: %s: %w", index, err)
}
rsp.Body.Close()
if _, err := req.Do(ctx, &result, opts...); err != nil {
return result, fmt.Errorf("failed issuing request: %w", err)
}
return result, nil
}