Запрос Elasticsearch для возврата всех записей - PullRequest
436 голосов
/ 12 января 2012

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

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

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

Ответы [ 26 ]

0 голосов
/ 02 мая 2019

Простое решение с использованием пакета python asticsearch-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 #asticsearch_dsl.Search.scan .

0 голосов
/ 10 августа 2018

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

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

ссылка на Elasticsearch

0 голосов
/ 09 августа 2018

Никто, кроме @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 # hit

0 голосов
/ 27 марта 2018
curl -XGET '{{IP/localhost}}:9200/{{Index name}}/{{type}}/_search?scroll=10m&pretty' -d '{
"query": {
"filtered": {
"query": {
"match_all": {}
}}'
0 голосов
/ 14 февраля 2018

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

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 голосов
/ 03 января 2017

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

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