ฉันมีฐานข้อมูลขนาดเล็กใน Elasticsearch และเพื่อการทดสอบต้องการดึงระเบียนทั้งหมดกลับคืน ฉันกำลังพยายามใช้ URL ของแบบฟอร์ม ...
http://localhost:9200/foo/_search?pretty=true&q={'matchAll':{''}}
มีคนให้ URL ที่คุณจะใช้ให้ฉันเพื่อทำสิ่งนี้ได้ไหม
ฉันมีฐานข้อมูลขนาดเล็กใน Elasticsearch และเพื่อการทดสอบต้องการดึงระเบียนทั้งหมดกลับคืน ฉันกำลังพยายามใช้ URL ของแบบฟอร์ม ...
http://localhost:9200/foo/_search?pretty=true&q={'matchAll':{''}}
มีคนให้ URL ที่คุณจะใช้ให้ฉันเพื่อทำสิ่งนี้ได้ไหม
คำตอบ:
ฉันคิดว่ามีการรองรับไวยากรณ์ของลูซิน:
http://localhost:9200/foo/_search?pretty=true&q=*:*
ขนาดเริ่มต้นที่ 10 ดังนั้นคุณอาจต้อง&size=BIGNUMBER
ได้รับมากกว่า 10 รายการ (โดยที่ BIGNUMBER เท่ากับจำนวนที่คุณเชื่อว่าใหญ่กว่าชุดข้อมูลของคุณ)
แต่เอกสาร elasticsearch แนะนำสำหรับชุดผลลัพธ์ขนาดใหญ่โดยใช้ประเภทการสแกนการค้นหา
เช่น:
curl -XGET 'localhost:9200/foo/_search?search_type=scan&scroll=10m&size=50' -d '
{
"query" : {
"match_all" : {}
}
}'
แล้วขอต่อตามลิงค์เอกสารด้านบนแนะนำ
แก้ไข: scan
เลิกใช้แล้วใน 2.1.0
scan
ไม่ได้ให้ผลประโยชน์ใด ๆ ที่มากกว่าปกติคำขอเรียงตามscroll
ลิงก์ไปยังเอกสารแบบยืดหยุ่น (พบโดย @ christophe-roussy)_doc
http://127.0.0.1:9200/foo/_search/?size=1000&pretty=1
^
สังเกตขนาดของ paramซึ่งเพิ่มจำนวนครั้งที่แสดงจากค่าเริ่มต้น (10) ถึง 1,000 ต่อชิ้น
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-from-size.html
max_result_window
elasticsearch (ES) รองรับการร้องขอ GET หรือ POST สำหรับรับข้อมูลจากดัชนีคลัสเตอร์ ES
เมื่อเราได้รับ:
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": {}
}
}
ฉันขอแนะนำให้ใช้ปลั๊กอิน UI พร้อม elasticsearch http://mobz.github.io/elasticsearch-head/ สิ่งนี้จะช่วยให้คุณเข้าใจดัชนีที่คุณสร้างและทดสอบดัชนีของคุณได้ดียิ่งขึ้น
from
+ size
ต้องไม่เกินการindex.max_result_window
ตั้งค่าดัชนีซึ่งเป็นค่าเริ่มต้นที่ 10,000
curl -XGET ... -d '{...}'
ว่าเป็นun
รูปแบบที่หลากหลายอย่างเป็นทางการของคำขอ ขอขอบคุณที่แสดงรูปแบบ GET และ POST ที่ถูกต้อง
หมายเหตุ:คำตอบที่เกี่ยวข้องกับรุ่นเก่าของ
0.90
ElasticSearch รุ่นที่วางจำหน่ายตั้งแต่นั้นมีไวยากรณ์ที่อัปเดตแล้ว โปรดอ้างอิงคำตอบอื่น ๆ ที่อาจให้คำตอบที่แม่นยำยิ่งขึ้นสำหรับคำตอบล่าสุดที่คุณกำลังมองหา
แบบสอบถามด้านล่างนี้จะส่งคืน 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 '
ค้นหาทุกประเภทในดัชนีฟู
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 '
ค้นหาประเภทผู้ใช้และทวีตในดัชนีทั้งหมด
นี่เป็นทางออกที่ดีที่สุดที่ฉันพบโดยใช้ไคลเอนต์หลาม
# 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
elasticsearch_dsl==5.4.0
search_type = 'scan',
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
scan
ช่วยซึ่งทำหน้าที่เลื่อนภายใต้ประทุน (ตั้งแต่รุ่น 5.xx ตอน leat)
search_type = 'scan'
เลิกใช้แล้ว รหัสที่คล้ายกันจะใช้งานไม่ได้แม้ว่าจะมีความแตกต่างที่น่าสนใจซึ่งฝังอยู่ในเอกสารเก่า elastic.co/guide/en/elasticsearch/reference/1.4/… โดยเฉพาะอย่างยิ่งเมื่อย้ายไปที่ไม่ใช้ search_type = scan คำค้นหา 'ค้นหา' ครั้งแรกจะมาพร้อมกับผลลัพธ์ชุดแรกที่จะประมวลผล
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>"
}
search_type=scan
เลิกใช้แล้ว ดังนั้นคุณควรลบสิ่งนั้นออก แต่พฤติกรรมนั้นเปลี่ยนไปเล็กน้อย ชุดข้อมูลชุดแรกกลับมาจากการค้นหาเริ่มต้น ลิงค์ที่คุณระบุจะแสดงวิธีการที่ถูกต้อง
ใช้server:9200/_stats
เพื่อรับสถิติเกี่ยวกับนามแฝงทั้งหมดของคุณเช่นขนาดและจำนวนองค์ประกอบต่อนามแฝงซึ่งมีประโยชน์มากและให้ข้อมูลที่เป็นประโยชน์
ถ้าคุณต้องการดึงหลายพันระเบียนแล้ว ... มีคนเพียงไม่กี่คนที่ให้คำตอบที่ถูกต้องในการใช้ 'scroll' (หมายเหตุ: บางคนแนะนำให้ใช้ "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 เพื่อแยกข้อมูล
! ง่าย คุณสามารถใช้size
และfrom
พารามิเตอร์!
http://localhost:9200/[your index name]/_search?size=1000&from=0
จากนั้นคุณเปลี่ยนfrom
ทีละน้อยจนกว่าคุณจะได้รับข้อมูลทั้งหมด
from
+ size
ต้องไม่มากกว่าการตั้งค่า index.max_result_window ซึ่งเป็นค่าเริ่มต้นที่ 10,000
from
และsize
-approach คุณจะพบกับปัญหาการแบ่งหน้าลึก ใช้ scroll API เพื่อสร้างเอกสารทั้งหมด
วิธีที่ดีที่สุดในการปรับขนาดคือใช้ size = number ที่ด้านหน้าของ URL
Curl -XGET "http://localhost:9200/logstash-*/_search?size=50&pretty"
หมายเหตุ: ค่าสูงสุดที่สามารถกำหนดได้ในขนาดนี้คือ 10,000 สำหรับค่าใด ๆ ที่สูงกว่าหนึ่งหมื่นก็คาดว่าคุณจะใช้ฟังก์ชั่นเลื่อนซึ่งจะลดโอกาสของผลกระทบต่อประสิทธิภาพการทำงาน
คุณสามารถใช้_count
API เพื่อรับค่าsize
พารามิเตอร์:
http://localhost:9200/foo/_count?q=<your query>
{count:X, ...}
ผลตอบแทน แยกค่า 'X' แล้วทำแบบสอบถามจริง:
http://localhost:9200/foo/_search?q=<your query>&size=X
http: // localhost: 9200 / foo / _search / ? ขนาด = 1,000 & สวย = 1
คุณจะต้องระบุพารามิเตอร์ข้อความค้นหาขนาดเนื่องจากค่าเริ่มต้นคือ 10
ขนาดพารามิเตอร์เพิ่มความนิยมที่แสดงจากค่าเริ่มต้น (10) ถึง 500
http: // localhost: 9200 / [indexName] / _search สวย = true & size = 500 & q = *:? *
เปลี่ยนจากทีละขั้นตอนเพื่อรับข้อมูลทั้งหมด
http: // localhost: 9200 / [indexName] / _search size = 500 & จาก = 0
สำหรับ Elasticsearch 6.x
คำขอ: GET /foo/_search?pretty=true
การตอบสนอง: ใน Hits-> ยอดรวมให้นับเอกสาร
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 1001,
"max_score": 1,
"hits": [
{
หากเป็นชุดข้อมูลขนาดเล็ก (เช่นระเบียน 1K)คุณสามารถระบุsize
:
curl localhost:9200/foo_index/_search?size=1000
แข่งขันแบบสอบถามทั้งหมดไม่จำเป็นต้องเป็นมันโดยปริยาย
หากคุณมีชุดข้อมูลขนาดกลางเช่นบันทึก 1Mคุณอาจไม่ได้มีหน่วยความจำมากพอที่จะโหลดมันดังนั้นคุณจำเป็นต้องมีการเลื่อน
เลื่อนเหมือนเคอร์เซอร์ในฐานข้อมูล ใน Elasticsearch จะจดจำตำแหน่งที่คุณค้างไว้และคงมุมมองเดิมของดัชนีไว้ (เช่นป้องกันไม่ให้ผู้ค้นหาออกไปด้วยการรีเฟรชป้องกันการรวมกลุ่มจากการผสาน )
API-wise คุณต้องเพิ่มพารามิเตอร์การเลื่อนลงในคำขอแรก:
curl 'localhost:9200/foo_index/_search?size=100&scroll=1m&pretty'
คุณกลับมาที่หน้าแรกและรหัสเลื่อน:
{
"_scroll_id" : "DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAADEWbmJlSmxjb2hSU0tMZk12aEx2c0EzUQ==",
"took" : 0,
...
โปรดจำไว้ว่าทั้ง ID เลื่อนที่คุณได้รับกลับมาและหมดเวลาที่ถูกต้องสำหรับหน้าถัดไป ข้อผิดพลาดทั่วไปที่นี่คือการระบุการหมดเวลาที่มีขนาดใหญ่มาก (ค่าของscroll
) ซึ่งจะครอบคลุมการประมวลผลชุดข้อมูลทั้งหมด (เช่น 1M บันทึก) แทนที่จะเป็นหนึ่งหน้า (เช่น 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 ...
curl -X GET 'localhost:9200/foo/_search?q=*&pretty'
โดยค่าเริ่มต้น Elasticsearch ส่งคืน 10 เรคคอร์ดดังนั้นควรมีการระบุขนาดอย่างชัดเจน
เพิ่มขนาดพร้อมคำขอเพื่อรับจำนวนเรคคอร์ดที่ต้องการ
http: // {host}: 9200 / {index_name} / _search? pretty = true & size = (จำนวนระเบียน)
หมายเหตุ: ขนาดหน้าสูงสุดต้องไม่เกิน index.max_result_window การตั้งค่าดัชนีซึ่งมีค่าเริ่มต้นเป็น 10,000
จาก Kibana DevTools:
GET my_index_name/_search
{
"query": {
"match_all": {}
}
}
วิธีแก้ปัญหาง่ายๆโดยใช้แพ็คเกจ 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
ผลลัพธ์สูงสุดซึ่งจะส่งคืนโดย elasticSearch คือ 10,000 โดยระบุขนาด
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" : ""
}'
เอกสารอย่างเป็นทางการให้คำตอบสำหรับคำถามนี้! คุณสามารถค้นหาได้ที่นี่
{
"query": { "match_all": {} },
"size": 1
}
คุณเพียงแค่แทนที่ขนาด (1) ด้วยจำนวนผลลัพธ์ที่คุณต้องการดู!
หากต้องการส่งคืนระเบียนทั้งหมดจากดัชนีทั้งหมดคุณสามารถทำได้:
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,
...
curl -XGET '{{IP/localhost}}:9200/{{Index name}}/{{type}}/_search?scroll=10m&pretty' -d '{
"query": {
"filtered": {
"query": {
"match_all": {}
}}'
ไม่มียกเว้น @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
หากยังมีใครบางคนกำลังมองหาข้อมูลทั้งหมดที่จะดึงจาก Elasticsearch เช่นฉันสำหรับ usecases บางส่วนนี่คือสิ่งที่ฉันทำ นอกจากนี้ข้อมูลทั้งหมดหมายถึงดัชนีทั้งหมดและเอกสารทุกประเภท ฉันใช้ Elasticsearch 6.3
curl -X GET "localhost:9200/_search?pretty=true" -H 'Content-Type: application/json' -d'
{
"query": {
"match_all": {}
}
}
'
นี่คือแบบสอบถามเพื่อบรรลุสิ่งที่คุณต้องการ (ฉันแนะนำให้ใช้ Kibana เนื่องจากช่วยให้เข้าใจแบบสอบถามได้ดีขึ้น)
GET my_index_name/my_type_name/_search
{
"query":{
"match_all":{}
},
size : 20,
from : 3
}
ในการรับบันทึกทั้งหมดที่คุณต้องใช้แบบสอบถาม "match_all"
size คือจำนวนระเบียนที่คุณต้องการดึงข้อมูล (ชนิดของข้อ จำกัด ) โดยค่าเริ่มต้น ES จะส่งคืนเฉพาะ 10 ระเบียน
จากเป็นเหมือนข้ามให้ข้าม 3 ระเบียนแรก
หากคุณต้องการเรียกระเบียนทั้งหมดให้ใช้ค่าจากฟิลด์ "รวม" จากผลลัพธ์เมื่อคุณกดคิวรีนี้จาก Kibana และใช้กับ "size"
การใช้ Elasticsearch 7.5.1
http://${HOST}:9200/${INDEX}/_search?pretty=true&q=*:*&scroll=10m&size=5000
ในกรณีที่คุณสามารถระบุขนาดของอาร์เรย์ด้วย & size = $ {number}
ในกรณีที่คุณไม่รู้จักคุณจัดทำดัชนี
http://${HOST}:9200/_cat/indices?v
การใช้คอนโซล kibana และ my_index เป็นดัชนีเพื่อค้นหาสิ่งต่อไปนี้สามารถมีส่วนร่วมได้ การขอให้ดัชนีคืนค่าเพียง 4 ฟิลด์ของดัชนีคุณยังสามารถเพิ่มขนาดเพื่อระบุจำนวนเอกสารที่คุณต้องการให้ส่งคืนโดยดัชนี ในฐานะของ ES 7.6 คุณควรใช้ _source แทนที่จะกรองมันจะตอบสนองได้เร็วขึ้น
GET /address/_search
{
"_source": ["streetaddress","city","state","postcode"],
"size": 100,
"query":{
"match_all":{ }
}
}
คุณสามารถใช้ size = 0 ซึ่งจะส่งคืนตัวอย่างเอกสารทั้งหมดให้คุณ
curl -XGET 'localhost:9200/index/type/_search' -d '
{
size:0,
"query" : {
"match_all" : {}
}
}'