Запрос Elasticsearch для возврата всех записей

490

У меня есть небольшая база данных в Elasticsearch, и в целях тестирования я хотел бы получить все записи обратно. Я пытаюсь использовать URL-адрес в форме ...

http://localhost:9200/foo/_search?pretty=true&q={'matchAll':{''}}

Может кто-нибудь дать мне URL, который вы бы использовали для этого, пожалуйста?

Джон Ливермор
источник
1
... где "foo" - это имя индекса, для которого вы хотите показать все записи.
Джонатан

Ответы:

744

Я думаю, что синтаксис Lucene поддерживается так:

http://localhost:9200/foo/_search?pretty=true&q=*:*

размер по умолчанию равен 10, поэтому вам также может понадобиться &size=BIGNUMBERполучить более 10 предметов. (где BIGNUMBER равен числу, которое, по вашему мнению, больше, чем ваш набор данных)

НО, документацияasticsearch предлагает для больших наборов результатов, используя тип поиска сканирования.

НАПРИМЕР:

curl -XGET 'localhost:9200/foo/_search?search_type=scan&scroll=10m&size=50' -d '
{
    "query" : {
        "match_all" : {}
    }
}'

и затем продолжайте запрашивать согласно предложенной выше ссылке на документацию.

РЕДАКТИРОВАТЬ: scanустарел в 2.1.0.

scanне предоставляет никаких преимуществ по сравнению с обычным scrollзапросом, отсортированным по _doc. ссылка на эластичные документы (замечено @ christophe-roussy)

Стив Кейси
источник
6
Спасибо. Это был последний раз, когда я придумал, который возвращает то, что мне сейчас нужно ... localhost: 9200 / foo / _search? Size = 50 & pretty = true & q = *: *
Джон Ливермор,
2
Добавление к @ ответ Стива, вы можете найти список параметров , которые elasticsearch понимает в этой связи elasticsearch.org/guide/reference/api/search/uri-request
Karthick
1
Спасибо @Steve за ваш ответ. Я не думаю, что это было достаточно важно для нового вопроса. Это нигде не было явно указано, поэтому я решил попросить здесь просто проверить.
Чурро
8
Вы действительно должны использовать scan + scroll-запросы. Если вы используете size = BIGNUMBER, обратите внимание, что Lucene выделяет память для оценок для этого числа, поэтому не делайте его слишком большим. :)
Алексей Брасетвик
4
Сканирование устарело в устаревшем в 2.1.0 : astic.co/guide/en/elasticsearch/reference/current/…
Кристоф Руссси,
137
http://127.0.0.1:9200/foo/_search/?size=1000&pretty=1
                                   ^

Обратите внимание на параметр размера , который увеличивает количество отображаемых обращений со значения по умолчанию (10) до 1000 за шард.

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

lfender6445
источник
10
Однако следует помнить одну вещь (из документов Elasticsearch): обратите внимание, что значение from + size не может быть больше, чем значение индекса index.max_result_window, которое по умолчанию равно 10 000.
user3078523
2
Это вернет 1000, не все, user3078523 прав, у этого метода есть пределmax_result_window
stelios
1
У него есть максимум, а также (если у вас есть много тысяч записей), это довольно нелепый подход к достижению этого максимума. Вместо этого вы должны использовать запрос «прокрутки».
Гарри Вуд
37

asticsearch (ES) поддерживает запрос GET или POST для получения данных из индекса кластера ES.

Когда мы делаем GET:

http://localhost:9200/[your index name]/_search?size=[no of records you want]&q=*:*

Когда мы делаем POST:

http://localhost:9200/[your_index_name]/_search
{
  "size": [your value] //default 10
  "from": [your start index] //default 0
  "query":
   {
    "match_all": {}
   }
}   

Я бы предложил использовать плагин для пользовательского интерфейса сasticsearch http://mobz.github.io/elasticsearch-head/ Это поможет вам лучше понять создаваемые вами индексы, а также протестировать ваши индексы.

Прерак Диван
источник
3
Как упомянул другой пользователь: from+ sizeне может быть больше значения index.max_result_windowиндекса, по умолчанию
равного
Этот подход имеет максимум, а также (если у вас есть много тысяч записей), это довольно нелепый подход, чтобы идти к этому максимуму. Вместо этого вы должны использовать запрос "прокрутки"
Гарри Вуд
Как ни странно, официальные документы показывают, curl -XGET ... -d '{...}'что это unофициальный смешанный стиль запроса. Спасибо за показ правильных форматов GET и POST.
Джесси Чисхолм
28

Примечание . Ответ относится к более старой версии Elasticsearch 0.90. Версии, выпущенные с тех пор, имеют обновленный синтаксис. Пожалуйста, обратитесь к другим ответам, которые могут дать более точный ответ на последний ответ, который вы ищете.

Приведенный ниже запрос вернет NO_OF_RESULTS, который вы хотели бы получить ..

curl -XGET 'localhost:9200/foo/_search?size=NO_OF_RESULTS' -d '
{
"query" : {
    "match_all" : {}
  }
}'

Теперь вопрос в том, что вы хотите, чтобы все записи были возвращены. Естественно, перед написанием запроса вы не будете знать значение NO_OF_RESULTS .

Как мы узнаем, сколько записей существует в вашем документе? Просто введите запрос ниже

curl -XGET 'localhost:9200/foo/_search' -d '

Это даст вам результат, который выглядит так, как показано ниже

 {
hits" : {
  "total" :       2357,
  "hits" : [
    {
      ..................

В результате общая сумма показывает, сколько записей доступны в документе. Итак, это хороший способ узнать значение NO_OF RESULTS

curl -XGET 'localhost:9200/_search' -d ' 

Поиск всех типов по всем показателям

curl -XGET 'localhost:9200/foo/_search' -d '

Поиск всех типов в индексе foo

curl -XGET 'localhost:9200/foo1,foo2/_search' -d '

Поиск всех типов в индексах foo1 и foo2

curl -XGET 'localhost:9200/f*/_search

Поиск всех типов в любых индексах, начинающихся с f

curl -XGET 'localhost:9200/_all/type1,type2/_search' -d '

Поиск типов пользователей и твитов по всем показателям

vjpandian
источник
9
По умолчанию ES возвращает 10 результатов, если параметр размера не включен в базовый запрос.
lfender6445
Предыдущему ответу было три года. Обновил его до текущего.
vjpandian
19

Это лучшее решение, которое я нашел с помощью клиента Python

  # Initialize the scroll
  page = es.search(
  index = 'yourIndex',
  doc_type = 'yourType',
  scroll = '2m',
  search_type = 'scan',
  size = 1000,
  body = {
    # Your query's body
    })
  sid = page['_scroll_id']
  scroll_size = page['hits']['total']

  # Start scrolling
  while (scroll_size > 0):
    print "Scrolling..."
    page = es.scroll(scroll_id = sid, scroll = '2m')
    # Update the scroll ID
    sid = page['_scroll_id']
    # Get the number of results that we returned in the last scroll
    scroll_size = len(page['hits']['hits'])
    print "scroll size: " + str(scroll_size)
    # Do something with the obtained page

https://gist.github.com/drorata/146ce50807d16fd4a6aa

Использование Java-клиента

import static org.elasticsearch.index.query.QueryBuilders.*;

QueryBuilder qb = termQuery("multi", "test");

SearchResponse scrollResp = client.prepareSearch(test)
        .addSort(FieldSortBuilder.DOC_FIELD_NAME, SortOrder.ASC)
        .setScroll(new TimeValue(60000))
        .setQuery(qb)
        .setSize(100).execute().actionGet(); //100 hits per shard will be returned for each scroll
//Scroll until no hits are returned
do {
    for (SearchHit hit : scrollResp.getHits().getHits()) {
        //Handle the hit...
    }

    scrollResp = client.prepareSearchScroll(scrollResp.getScrollId()).setScroll(new TimeValue(60000)).execute().actionGet();
} while(scrollResp.getHits().getHits().length != 0); // Zero hits mark the end of the scroll and the while loop.

https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/java-search-scrolling.html

HungUnicorn
источник
Спасибо Марк, это именно то, что я искал! В моем случае (ELK 6.2.1, python 3) аргумент search_type был недопустим, и document_type больше не нужен, так как ELK 6.0
Кристоф Шранц
Идеальное решение! Спасибо. Я использовал, elasticsearch_dsl==5.4.0и это работает без search_type = 'scan',.
Усман Макбул
ES 6.3. В этом примере происходит сбой моего сервиса Elasticsearch при попытке прокрутки документов со size=10000скоростью 110 тыс. С , где-то между 5-7 итерациями. с status=127, main ERROR Null object returned for RollingFile in Appenders, main ERROR Unable to locate appender "rolling" for logger config "root"Нет входит в/var/log/elasticsearch/elasticsearch.log
Стелиос
scanНапомним, что клиенты python реализуют помощников, которые выполняют прокрутку под капотом (начиная с версии 5.xx по крайней мере)
MCMZL
search_type = 'scan'устарел. Подобный код будет работать без этого, хотя есть некоторые интересные отличия, которые хорошо скрыты в старой документации. astic.co/guide/en/elasticsearch/reference/1.4/… В частности, при переходе без использования search_type = scan этот первый запрос 'search' будет сопровождаться первой партией результатов для обработки.
Гарри Вуд
12

Elasticsearch станет значительно медленнее, если вы просто добавите в качестве размера какое-то большое число, и один из способов получения всех документов - использовать идентификаторы сканирования и прокрутки.

https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-scroll.html

В Elasticsearch v7.2 вы делаете это так:

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

Результаты этого будут содержать _scroll_id, который вы должны запросить, чтобы получить следующие 100 фрагментов.

POST /_search/scroll 
{
    "scroll" : "1m", 
    "scroll_id" : "<YOUR SCROLL ID>" 
}
WoodyDRN
источник
1
Этот ответ требует больше обновлений. search_type=scanсейчас устарела. Таким образом, вы должны удалить это, но затем поведение немного изменилось. Первая партия данных возвращается с начального поискового вызова. Ссылка, которую вы предоставляете, показывает правильный способ сделать это.
Гарри Вуд
1
Мой комментарий был на самом деле, чтобы отметить, что вы не можете просто добавить любое число в качестве размера, так как это будет намного медленнее. Поэтому я удалил пример кода, и люди могут перейти по ссылке, чтобы получить правильный код.
WoodyDRN
1
@WoodyDRN Лучше иметь код в своем ответе (даже если он устареет), чтобы он оставался доступным после смерти ссылки.
Trisped
11

используйте server:9200/_statsтакже для получения статистики обо всех ваших псевдонимах, таких как размер и количество элементов на псевдоним, это очень полезно и предоставляет полезную информацию

Уссама Л.
источник
2
Но, насколько я помню, ES позволяет получать только 16000 данных за запрос. Таким образом, если данные выше 16000, этого решения недостаточно.
Амина Нураини
10

Если вы хотите получить много тысяч записей, тогда ... несколько человек дали правильный ответ с помощью 'scroll' (Примечание: некоторые люди также предложили использовать 'search_type = scan'. Это устарело, а в v5.0 удалено). Тебе это не нужно)

Начните с запроса 'search', но указав параметр 'scroll' (здесь я использую время ожидания в 1 минуту):

curl -XGET 'http://ip1:9200/myindex/_search?scroll=1m' -d '
{
    "query": {
            "match_all" : {}
    }
}
'

Это включает в себя вашу первую «партию» хитов. Но мы не закончили здесь. Вывод вышеуказанной команды curl будет выглядеть примерно так:

{ "_Scroll_id": "c2Nhbjs1OzUyNjE6NU4tU3BrWi1UWkNIWVNBZW43bXV3Zzs1Mzc3OkhUQ0g3VGllU2FhemJVNlM5d2t0alE7NTI2Mjo1Ti1TcGtaLVRaQ0hZU0FlbjdtdXdnOzUzNzg6SFRDSDdUaWVTYWF6YlU2Uzl3a3RqUTs1MjYzOjVOLVNwa1otVFpDSFlTQWVuN211d2c7MTt0b3RhbF9oaXRzOjIyNjAxMzU3Ow ==", "взял": 109, "timed_out" ложь "_ Осколки": { "всего": 5, "успешно": 5, "не": 0}, "хиты" : { "всего": 22601357, "max_score": 0.0, "хиты": []}}

Важно иметь под рукой _scroll_id, так как далее вы должны выполнить следующую команду:

    curl -XGET  'localhost:9200/_search/scroll'  -d'
    {
        "scroll" : "1m", 
        "scroll_id" : "c2Nhbjs2OzM0NDg1ODpzRlBLc0FXNlNyNm5JWUc1" 
    }
    '

Тем не менее, передача scroll_id - это не то, что нужно делать вручную. Лучше всего написать код для этого. например, в Java:

    private TransportClient client = null;
    private Settings settings = ImmutableSettings.settingsBuilder()
                  .put(CLUSTER_NAME,"cluster-test").build();
    private SearchResponse scrollResp  = null;

    this.client = new TransportClient(settings);
    this.client.addTransportAddress(new InetSocketTransportAddress("ip", port));

    QueryBuilder queryBuilder = QueryBuilders.matchAllQuery();
    scrollResp = client.prepareSearch(index).setSearchType(SearchType.SCAN)
                 .setScroll(new TimeValue(60000))                            
                 .setQuery(queryBuilder)
                 .setSize(100).execute().actionGet();

    scrollResp = client.prepareSearchScroll(scrollResp.getScrollId())
                .setScroll(new TimeValue(timeVal))
                .execute()
                .actionGet();

Теперь LOOP для последней команды использует SearchResponse для извлечения данных.

Somum
источник
6

Просто! Вы можете использовать sizeи fromпараметр!

http://localhost:9200/[your index name]/_search?size=1000&from=0

затем вы меняете fromпостепенно, пока не получите все данные.

Амина Нураини
источник
4
никогда не используйте этот метод, если данные содержат много документов ... Каждый раз, когда вы переходите на «следующую страницу», Elastic будет все медленнее и медленнее! Вместо этого используйте SearchAfter
Joshlo
3
Кроме того, это решение не будет работать, если общий размер данных будет превышать 10 000. Параметр size = 1000 & from = 10001 не будет работать.
iclman
2
Действительно не удается. Параметры from+ sizeне могут быть больше, чем значение индекса index.max_result_window, которое по умолчанию
равно
1
Если данные содержат много тысяч документов, правильный ответ - использовать запрос «прокрутка».
Гарри Вуд
С fromи size-подходом вы столкнетесь с проблемой Deep PAGINATION. Используйте API прокрутки, чтобы создать дамп всех документов.
Даниэль Шнайтер
5

Лучший способ отрегулировать размер - использовать размер = число перед URL

Curl -XGET "http://localhost:9200/logstash-*/_search?size=50&pretty"

Примечание. Максимальное значение, которое можно определить в этом размере, составляет 10000. Для любого значения, превышающего десять тысяч, ожидается, что вы будете использовать функцию прокрутки, которая сведет к минимуму любые шансы влияния на производительность.

Акшай Мисра
источник
С какой версии появляется максимальный размер?
WoodyDRN
Это может быть "лучшим" способом до определенного момента, но немного странным на самом деле. Если у вас много тысяч записей, то лучшим способом является запрос «прокрутки».
Гарри Вуд
С подходом from и size вы столкнетесь с проблемой Deep Pagination. Используйте API прокрутки, чтобы создать дамп всех документов.
Даниэль Шнайтер
5

Вы можете использовать _countAPI, чтобы получить значение для sizeпараметра:

http://localhost:9200/foo/_count?q=<your query>

Возвращает {count:X, ...}. Извлеките значение 'X', а затем выполните фактический запрос:

http://localhost:9200/foo/_search?q=<your query>&size=X
Даниил
источник
1
При установке размера X таким образом, может возникнуть неожиданный сбой параллелизма: подумайте, что произойдет, если запись будет добавлена ​​между выполнением подсчета и установкой размера в следующем запросе ... но также, если у вас есть много тысяч записей для получения тогда это неправильный подход. Вместо этого вы должны использовать запрос «прокрутки».
Гарри Вуд
4

http: // localhost: 9200 / foo / _search / ? размер = 1000 & красивая = 1

вам нужно будет указать параметр запроса размера по умолчанию 10

Эдвин Икечукву Оконкво
источник
С подходом from и size вы столкнетесь с проблемой Deep Pagination. Используйте API прокрутки, чтобы создать дамп всех документов.
Даниэль Шнайтер
4

Параметр size увеличивает количество отображаемых обращений со значения по умолчанию (10) до 500.

HTTP: // локальный: 9200 / [IndexName] / _search довольно = верно и размер = 500 & Q = *: *

Изменение с шаг за шагом , чтобы получить все данные.

HTTP: // локальный: 9200 / [имя_индекс] / _search размер = 500 & от 0 =
Прасанна Яфан
источник
3

Для Elasticsearch 6.x

Запрос: GET /foo/_search?pretty=true

Ответ: В Hits-> total укажите количество документов.

    {
      "took": 1,
      "timed_out": false,
      "_shards": {
        "total": 5,
        "successful": 5,
        "skipped": 0,
        "failed": 0
      },
      "hits": {
        "total": 1001,
        "max_score": 1,
        "hits": [
          {
Анураг
источник
3

Если это небольшой набор данных (например, 1K записей) , вы можете просто указать size:

curl localhost:9200/foo_index/_search?size=1000

Матч всех запросов не требуется, так как это подразумевается.

Если у вас есть набор данных среднего размера, например, 1M записей , у вас может не хватить памяти для его загрузки, поэтому вам нужна прокрутка .

Свиток похож на курсор в БД. В Elasticsearch он запоминает, где вы остановились, и сохраняет то же представление индекса (то есть предотвращает уход поисковика с обновлением , предотвращает слияние сегментов ).

По API, вы должны добавить параметр прокрутки к первому запросу:

curl 'localhost:9200/foo_index/_search?size=100&scroll=1m&pretty'

Вы вернетесь на первую страницу и прокрутите ID:

{
  "_scroll_id" : "DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAADEWbmJlSmxjb2hSU0tMZk12aEx2c0EzUQ==",
  "took" : 0,
...

Помните, что и идентификатор прокрутки, который вы получаете, и время ожидания действительны для следующей страницы . Распространенной ошибкой здесь является указание очень большого тайм-аута (значения scroll), которое будет охватывать обработку всего набора данных (например, 1М записей) вместо одной страницы (например, 100 записей).

Чтобы перейти на следующую страницу, введите последний идентификатор прокрутки и время ожидания, которое должно длиться до получения следующей страницы:

curl -XPOST -H 'Content-Type: application/json' 'localhost:9200/_search/scroll' -d '{
  "scroll": "1m",
  "scroll_id": "DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAADAWbmJlSmxjb2hSU0tMZk12aEx2c0EzUQ=="
}'

Если у вас есть много для экспорта (например, документы 1B) , вы хотите распараллелить. Это можно сделать с помощью нарезанного свитка . Скажем, вы хотите экспортировать в 10 потоков. Первый поток выдаст такой запрос:

curl -XPOST -H 'Content-Type: application/json' 'localhost:9200/test/_search?scroll=1m&size=100' -d '{
  "slice": {
    "id": 0, 
    "max": 10 
  }
}'

Вы получаете первую страницу и идентификатор прокрутки, точно так же, как обычный запрос прокрутки. Вы будете использовать его точно так же, как обычный свиток, за исключением того, что вы получите 1/10 данных.

Другие темы будут делать то же самое, за исключением того, idчто будет 1, 2, 3 ...

Раду Георге
источник
2
curl -X GET 'localhost:9200/foo/_search?q=*&pretty' 
Дхрув Шарма
источник
2

По умолчанию Elasticsearch возвращает 10 записей, поэтому размер должен быть указан явно.

Добавьте размер с запросом, чтобы получить желаемое количество записей.

http: // {host}: 9200 / {index_name} / _search? pretty = true & size = (количество записей)

Примечание. Максимальный размер страницы не может быть больше, чем значение индекса index.max_result_window, которое по умолчанию равно 10 000.

Сатьендра Шарма
источник
2

От Kibana DevTools его:

GET my_index_name/_search
{
  "query": {
    "match_all": {}
  }
}
belostoky
источник
2

Простое решение с использованием пакета pythonasticsearch-dsl :

from elasticsearch_dsl import Search
from elasticsearch_dsl import connections

connections.create_connection(hosts=['localhost'])

s = Search(index="foo")
response = s.scan()

count = 0
for hit in response:
    # print(hit.to_dict())  # be careful, it will printout every hit in your index
    count += 1

print(count)

Смотрите также https://elasticsearch-dsl.readthedocs.io/en/latest/api.html#elasticsearch_dsl.Search.scan .

asmaier
источник
1

Максимальный результат, который будет возвращаться с помощьюasticSearch, составляет 10000 при условии размера

curl -XGET 'localhost:9200/index/type/_search?scroll=1m' -d '
{
   "size":10000,
   "query" : {
   "match_all" : {}
    }
}'

После этого вам нужно использовать Scroll API для получения результата, получить значение _scroll_id и поместить это значение в scroll_id.

curl -XGET  'localhost:9200/_search/scroll'  -d'
{
   "scroll" : "1m", 
   "scroll_id" : "" 
}'
RAHUL JAIN
источник
API прокрутки должен использоваться с самого начала с самого первого запроса.
Даниэль Шнайтер
1

Официальная документация дает ответ на этот вопрос! Вы можете найти это здесь .

{
  "query": { "match_all": {} },
  "size": 1
}

Вы просто заменяете size (1) на количество результатов, которое хотите увидеть!

christouandr7
источник
Автор вопроса спрашивал «все» результаты, а не заранее определенное количество результатов. Хотя полезно разместить ссылку на документы, в документах не описывается, как этого добиться, и ваш ответ тоже не описывается.
Maarten00
С подходом from и size вы столкнетесь с проблемой Deep Pagination. Используйте API прокрутки, чтобы создать дамп всех документов.
Даниэль Шнайтер
0

Чтобы вернуть все записи из всех индексов, вы можете сделать:

curl -XGET http://35.195.120.21:9200/_all/_search?size=50&pretty

Вывод:

  "took" : 866,
  "timed_out" : false,
  "_shards" : {
    "total" : 25,
    "successful" : 25,
    "failed" : 0
  },
  "hits" : {
    "total" : 512034694,
    "max_score" : 1.0,
    "hits" : [ {
      "_index" : "grafana-dash",
      "_type" : "dashboard",
      "_id" : "test",
      "_score" : 1.0,
       ...
exceltior
источник
0
curl -XGET '{{IP/localhost}}:9200/{{Index name}}/{{type}}/_search?scroll=10m&pretty' -d '{
"query": {
"filtered": {
"query": {
"match_all": {}
}}'
адитйа
источник
Хотя этот фрагмент кода может решить вопрос, в том числе объяснение действительно помогает улучшить качество вашего сообщения. Помните, что вы отвечаете на вопрос читателей в будущем, и эти люди могут не знать причин, по которым вы предлагаете код.
Стамос
0

Никто, кроме @Akira Sendoh не ответил, как на самом деле получить ВСЕ документы. Но даже это решение приводит к сбою моего сервиса ES 6.3 без логов. Единственное, что сработало для меня при использовании низкоуровневой elasticsearch-pyбиблиотеки, - это помощник по сканированию , использующий scroll()API:

from elasticsearch.helpers import scan

doc_generator = scan(
    es_obj,
    query={"query": {"match_all": {}}},
    index="my-index",
)

# use the generator to iterate, dont try to make a list or you will get out of RAM
for doc in doc_generator:
    # use it somehow

Тем не менее, более чистый путь в настоящее время, кажется, заключается в использовании elasticsearch-dslбиблиотеки, которая предлагает более абстрактные, более чистые вызовы, например: http://elasticsearch-dsl.readthedocs.io/en/latest/search_dsl.html#hits

Стелиос
источник
0

Если до сих пор кто-то ищет все данные, которые будут получены от Elasticsearch, как я, для некоторых случаев, вот что я сделал. Более того, все данные означают все индексы и все типы документов. Я использую Elasticsearch 6.3

curl -X GET "localhost:9200/_search?pretty=true" -H 'Content-Type: application/json' -d'
{
    "query": {
        "match_all": {}
    }
}
'

Elasticsearch ссылка

Сантош Кумар Арджунан
источник
0

это запрос, чтобы выполнить то, что вы хотите (я предлагаю использовать Kibana, так как это помогает лучше понимать запросы)

GET my_index_name/my_type_name/_search
{
   "query":{
      "match_all":{}
   },
   size : 20,
   from : 3
}

чтобы получить все записи, вы должны использовать запрос "match_all".

Размер - это количество записей, которые вы хотите получить (ограничение). по умолчанию ES вернет только 10 записей

от как пропустить, пропустить первые 3 записи.

Если вы хотите извлечь все записи, просто используйте значение из поля «итоги» из результата, как только вы нажмете на этот запрос из Kibana, и используйте его с «размером».

ниранджан гарпале
источник
Ограничением этого запроса является то, что size + from должен быть меньше или равен «index.max_result_window». Для большого количества документов (по умолчанию 10000+) этот запрос не применим.
KarelHusa
0

Использование Elasticsearch 7.5.1

http://${HOST}:9200/${INDEX}/_search?pretty=true&q=*:*&scroll=10m&size=5000

в случае, если вы также можете указать размер вашего массива с помощью & size = $ {число}

если вы не знаете свой индекс

http://${HOST}:9200/_cat/indices?v
Тиаго Медичи
источник
0

Используя консоль kibana и my_index в качестве индекса для поиска, можно внести следующее. Попросив индекс вернуть только 4 поля индекса, вы также можете добавить размер, чтобы указать, сколько документов вы хотите вернуть по индексу. Начиная с ES 7.6 вы должны использовать _source, а не фильтровать, он будет реагировать быстрее.

GET /address/_search
 {
   "_source": ["streetaddress","city","state","postcode"],
   "size": 100,
   "query":{
   "match_all":{ }
    }   
 }
Грегори Нили
источник
-5

Вы можете использовать размер = 0, это вернет вам все документы пример

curl -XGET 'localhost:9200/index/type/_search' -d '
{
   size:0,
   "query" : {
   "match_all" : {}
    }
}'
Premkumar
источник
1
Это вернет накопленную информацию, но не сами попадания
user732456