2017-02-09 11 views
0

Используя Elasticsearch 5.2, я хранил около 20k Geo Points.Geo Points GET Limit

Я хочу запросить их все, чтобы показать их на карте Google. .? Однако, как указано в документации, предельный размер, кажется, 10к (я получаю ошибку Result window is too large, from + size must be less than or equal to: [10000] but was [20000]

Есть обходной путь, чтобы получить все мои пункты

Запрос я использовал:

{ 
    "size":10000, 
    "_source": ["geo"], 
    "query": { 
     "bool": { 
      "must" : [ 
       { "term" : { myId" : 1234 } }, 
       { 
        "range" :{ 
         "@timestamp" : { 
          "gte" : "now-10m" 
         } 
        } 
       } 
      ] 
     } 
    } 
} 
+0

вы попробуйте [свиток и апи сканирования] (https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-scroll.html)? Это даст вам все результаты, но не в одном запросе. – pratikvasa

+0

Я не знал об этом прокрутке api. Я посмотрю, спасибо! – Romain

ответ

0

Чтобы получить большой набор результатов вы можете использовать scroll and scan API

Это может быть сделано в два этапа.

T первого o Вы искали запрос добавить свиток

POST /index_name/type_name/_search?scroll=1m 
{ 
    "size": 100, 
    "query": { 
     "match_all": {} 
    } 
} 

Это вернет идентификатор прокрутки. С помощью идентификатора прокрутки вы можете вызывать следующее несколько раз, чтобы получать 100 (размер) результатов каждый раз.

POST /_search/scroll 
{ 
    "scroll" : "1m", 
    "scroll_id" : "DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAD4WYm9laVYtZndUQlNsdDcwakFMNjU1QQ==" 
}