Elasticsearch에 작은 데이터베이스가 있으며 테스트 목적으로 모든 레코드를 가져오고 싶습니다. 양식의 URL을 사용하려고합니다 …
http://localhost:9200/foo/_search?pretty=true&q={'matchAll':{''}}
누군가 당신이 이것을 달성하는 데 사용할 URL을 줄 수 있습니까?
답변
나는 lucene 구문이 지원된다고 생각합니다.
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" : {}
}
}'
위의 문서 링크에 따라 계속 요청하십시오.
편집 : scan
2.1.0에서 더 이상 사용되지 않습니다.
scan
에 scroll
의해 정렬 된 일반 요청에 비해 어떠한 이점도 제공하지 않습니다 _doc
. 탄력적 문서 링크 (@ christophe-roussy에 의해 발견)
답변
http://127.0.0.1:9200/foo/_search/?size=1000&pretty=1
^
size param을 확인 하면 적중이 기본 (10)에서 샤드 당 1000으로 증가합니다.
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-from-size.html
답변
elasticsearch (ES)는 ES 클러스터 인덱스에서 데이터를 가져 오기위한 GET 또는 POST 요청을 모두 지원합니다.
우리가 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": {}
}
}
elasticsearch http://mobz.github.io/elasticsearch-head/ 와 함께 UI 플러그인을 사용하는 것이 좋습니다 .
이렇게하면 인덱스를 더 잘 느끼고 인덱스를 테스트하는 데 도움이됩니다.
답변
참고 : 정답은 이전 버전의 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 '
모든 색인에서 사용자 및 트윗 검색 유형
답변
이것은 파이썬 클라이언트를 사용하여 찾은 최고의 솔루션입니다
# 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
자바 클라이언트 사용
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가 상당히 느려집니다. 모든 문서를 가져 오는 데 사용하는 한 가지 방법은 스캔 및 스크롤 ID를 사용하는 것입니다.
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": {}
}
}
이 결과에는 다음 100 청크를 얻기 위해 쿼리 해야하는 _scroll_id가 포함됩니다.
POST /_search/scroll
{
"scroll" : "1m",
"scroll_id" : "<YOUR SCROLL ID>"
}
답변
server:9200/_stats
또한 별 명당 요소의 크기 및 수와 같이 모든 별명에 대한 통계를 가져 오는 데 사용 하면 매우 유용하고 유용한 정보를 제공합니다.