es to dataframe with python

1. es to dataframe in jupyter

  • 기본적으로 es로 데이터를 받아올때는 10000개로 개수가 제한된다
    • 아마 성능상 이유로 기본셋팅을 10000개로 제한한거 같다
  • 여러방법이 있지만 주로사용하는 search_after를 소개한다.
  1. sort로 조회한다.
data = {"match_all":{}}
sort = {"_id":{"order":"asc"}}
body = {'from':0, 'size':10000,"query":data,"sort":sort}
results = es.search(index='datalake_market_category_matching', body=body)
print(len(results['hits']['hits']))

result = results['hits']['hits']
df = json_normalize(result)
df.tail()
  • 결과
  1. 결과값중 sort값을 찾아 search_aftert의 value값으로 넣고 검색한다.
data = {"match_all":{}}
sort = {"_id":{"order":"asc"}}
body = {'from':0, 'size':10000,"query":data, "search_after":["1yGOmnYBnb2QtO2Afr5Q"],"sort":sort}
results = es.search(index='datalake_market_category_matching', body=body)
print(len(results['hits']['hits']))

result = results['hits']['hits']
df2 = json_normalize(result)
df2.head()
  • 처음 sort한 값의 마지막 행 다음부터 조회가 된다.

Reference

https://wedul.site/541

좋은 웹페이지 즐겨찾기