Elasticsearch запит повернути всі записи


490

У мене є невелика база даних в Elasticsearch, і для цілей тестування я хотів би повернути всі записи назад. Я намагаюся використовувати URL форми ...

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

Чи можете мені хтось вказати URL-адресу, яку ви використали для цього?


1
... де "foo" - назва індексу, для якого потрібно показати всі записи.
Джонатан

Відповіді:


744

Я думаю, що синтаксис люцена підтримується так:

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

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

АЛЕ, elasticsearch документація передбачає для великих наборів результатів, використовуючи скануючий тип пошуку.

EG:

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

а потім продовжуйте запитувати відповідно до наведеного вище посилання на документацію.

EDIT: 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
Ви дійсно повинні використовувати сканування + прокрутки-запити. Якщо ви використовуєте size = BIGNUMBER, зауважте, що люцен виділяє пам'ять для балів для цього числа, тому не робіть його надто великим. :)
Алекс Брасетвік

4
Сканування було знято
Крістоф Руссі

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


10
Однак слід пам’ятати про одне (від Документів Elasticsearch): Зауважте, що з + розміру не може бути більше, ніж параметр індексу index.max_result_window, який за замовчуванням становить 10 000.
користувач3078523

2
Це поверне 1000, не все, користувач3078523 вірно, цей метод має обмеженняmax_result_window
stelios

1
Він має максимум, а також (якщо у вас є багато тисяч записів) - це досить кидкий важкий підхід, щоб рухатися до цього максимуму. Натомість слід використовувати запит "прокрутки".
Гаррі Вуд

37

elasesearch (ES) підтримує як GET, так і POST запит на отримання даних з індексу кластера ES.

Коли ми робимо GET:

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

Коли ми робимо пошту:

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

Я б запропонував використовувати плагін інтерфейсу користувача з електронним пошуком 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 РЕЗУЛЬТАТІВ

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 '

Типи пошуку користувач і твіт у всіх індексах


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


Дякую Марку, саме це я шукав! У моєму випадку (ELK 6.2.1, python 3) аргумент search_type був недійсним, а тип_документа більше не потрібен, оскільки ELK 6.0
Крістоф Шранц

Ідеальне рішення! Дякую. Я використовував, elasticsearch_dsl==5.4.0і це працює без цього search_type = 'scan',.
Усман Макбул

ES 6.3. Цей приклад змушує мою службу Elasticsearch вийти з ладу, намагаючись прокручувати документи на 110 тис. С size=10000, десь між 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
Стеліос

Для запису клієнти python реалізують scanhelpers`, який робить прокрутку під кришкою (починаючи з версії
5.xx у примхливому вигляді

search_type = 'scan'застаріло. Подібний код працюватиме і без цього, хоча є деякі цікаві відмінності, які добре закопані у старій документації. elastic.co/guide/en/elasticsearch/reference/1.4/… Зокрема, при переході на використання не search_type = сканування, перший запит "пошуку" надходить із першою партією результатів для обробки.
Гаррі Вуд

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>" 
}

1
Ця відповідь потребує більше оновлень. search_type=scanзараз застаріло. Тож вам слід це зняти, але тоді поведінка трохи змінилася. Перша група даних повертається з початкового виклику пошуку. Посилання, яке ви надаєте, показує правильний спосіб зробити це.
Гаррі Вуд

1
У моєму коментарі було дійсно відзначити, що ви не можете просто додати будь-яке число як розмір, оскільки це було б набагато повільніше. Тому я видалив приклад коду, і люди можуть перейти за посиланням, щоб отримати правильний код.
WoodyDRN

1
@WoodyDRN Краще мати код у своїй відповіді (навіть якщо він старіє), щоб він все ще був доступний, коли посилання відмирає.
Trisped

11

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


2
Але, наскільки я пам’ятаю, ES дозволяють отримувати лише 16000 даних за запит. Отже, якщо дані вище 16000, цього рішення недостатньо.
Аміна Нурайні

10

Якщо ви хочете витягнути багато тисяч записів, то ... кілька людей дали правильну відповідь за допомогою "прокрутки" (Примітка. Деякі люди також запропонували використовувати "search_type = scan". Це було знято, а в v5.0 видалено. Вам це не потрібно)

Почніть із запиту "пошук", але вкажіть параметр "прокрутки" (тут я використовую 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 для вилучення даних.


6

Просто! Ви можете використовувати sizeі fromпараметри!

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

потім ви fromпоступово змінюєте, поки не отримаєте всі дані.


4
ніколи не використовуйте цей метод, якщо дані містять багато документів ... Кожен раз, коли ви переходите на "наступну сторінку", Еластична буде повільніше і повільніше! Використовуйте SearchAfter натомість
Joshlo

3
Крім того, це рішення не працюватиме, якщо загальний розмір даних перевищує 10 000. Не вдасться розмір опції = 1000 та від = 10001.
iclman

2
Справді не вдається. Параметри from+ sizeне можуть бути більше, ніж параметр index.max_result_window, який за замовчуванням до 10 000
stelios

1
Якщо дані містять багато тисяч документів, правильною відповіддю є використання запиту "прокрутки".
Гаррі Вуд

За допомогою fromі- sizeпідходу ви зіткнетеся з проблемою Deep Pagination. Використовуйте API прокрутки, щоб зробити дамп усіх документів.
Даніель Шнайтер

5

Найкращий спосіб регулювати розмір - це використовувати розмір = число перед URL-адресою

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

Примітка: максимальне значення, яке можна визначити в цьому розмірі, становить 10000. Для будь-якого значення, що перевищує десять тисяч, ви очікуєте використання функції прокрутки, яка мінімізує будь-які шанси впливати на продуктивність.


З якої версії виникає максимальний розмір?
WoodyDRN

Це може бути "найкращий" спосіб до точки, але насправді трохи кивнув. Якщо у вас багато тисяч записів, то найкращий спосіб - це запит "прокрутки".
Гаррі Вуд

З підходом до і розміру ви зіткнетеся з проблемою глибокої сторінки. Використовуйте 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


З підходом до і розміру ви зіткнетеся з проблемою глибокої сторінки. Використовуйте API прокрутки, щоб зробити дамп усіх документів.
Даніель Шнайтер

4

Параметр розміру збільшує кількість показів, які відображаються з стандартного (10) до 500.

http: // localhost: 9200 / [indexName] / _search? pretty = true & size = 500 & q = *: *

Зміна з крок за кроком , щоб отримати всі дані.

http: // localhost: 9200 / [indexName] / _search? size = 500 & from = 0

3

Для Elasticsearch 6.x

Запит: GET /foo/_search?pretty=true

Відповідь: У переглядах-> загалом, дайте кількість документів

    {
      "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

Матч всіх запитів не потрібно, так як це мається на увазі.

Якщо у вас набір даних середнього розміру, як-то записи 1М , у вас може не вистачити пам'яті для завантаження, тому вам потрібен прокрутка .

Прокрутка - це як курсор у БД. У програмі Elasticsearch він пам’ятає, де ви зупинилися, і зберігає однаковий вигляд індексу (тобто запобігає пошуку шукача відійти з оновленням , запобігає злиття сегментів ).

API-розумно, вам потрібно додати параметр прокрутки до першого запиту:

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

Ви отримуєте назад першу сторінку та ідентифікатор прокрутки:

{
  "_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 частини даних.

Інші потоки зробили б те саме, за винятком id1, 2, 3 ...



2

За замовчуванням Elasticsearch повертає 10 записів, тому розмір повинен бути наданий явно.

Додайте розмір із запитом, щоб отримати бажану кількість записів.

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

Примітка: Максимальний розмір сторінки не може перевищувати значення параметра index.max_result_window, яке за замовчуванням становить 10 000.



2

Просте рішення з використанням пакету python elasticsearch-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 .


1

Максимальний результат, який повернеться у програміustiSearch, - 10000, надавши розмір

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

Після цього вам потрібно скористатися API прокрутки, щоб отримати результат, отримати значення _scroll_id і поставити це значення в scroll_id

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

API прокрутки слід використовувати з самого початку з першого запиту.
Даніель Шнайтер

1

Офіційна документація дає відповідь на це питання! ви можете знайти його тут .

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

Ви просто замінюєте розмір (1) на кількість результатів, які хочете побачити!


Автор питання запитував "усі" результати, а не заздалегідь визначений обсяг результатів. Хоча корисно розмістити посилання на документи, вони не описують, як цього досягти, а також не відповідають ваші відповіді.
Maarten00

З підходом до і розміру ви зіткнетеся з проблемою глибокої сторінки. Використовуйте 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,
       ...

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": {}
    }
}
'

Еластична посилання на дослідження


0

це запит, щоб виконати те, що ви хочете, (я пропоную використовувати Kibana, оскільки це допомагає зрозуміти запити краще)

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

щоб отримати всі записи, ви повинні використовувати запит "match_all".

розмір - це кількість записів, які ви хочете отримати (вид обмеження). за замовчуванням ES поверне лише 10 записів

з - це як пропустити, пропустити перші 3 записи.

Якщо ви хочете отримати всі записи, просто використовуйте значення з поля "загальний" з результату, як тільки ви натиснете цей запит від Кібана, і використовуйте його з "розміром".


Обмеженням цього запиту є те, що розмір + від повинен бути нижчим або рівним "index.max_result_window". Для великої кількості документів (за замовчуванням 10000+) цей запит не застосовується.
KarelHusa

0

Використання Elasticsearch 7.5.1

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

якщо ви також можете вказати розмір масиву за допомогою & size = $ {number}

якщо ви не знаєте, що ви індексуєте

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

Ви можете використовувати size = 0, це поверне вам усі приклади документів

curl -XGET 'localhost:9200/index/type/_search' -d '
{
   size:0,
   "query" : {
   "match_all" : {}
    }
}'

1
Це поверне накопичену інформацію, але не самі хіти
user732456
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.