forked from LBRYCommunity/lbry-sdk
Merge pull request #3343 from lbryio/example_es
add small example script showing how to read and update values to ES as we currently use it
This commit is contained in:
commit
16dfaa3e27
1 changed files with 46 additions and 0 deletions
46
scripts/example_update_es.py
Normal file
46
scripts/example_update_es.py
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
import asyncio
|
||||||
|
from pprint import pprint
|
||||||
|
|
||||||
|
from elasticsearch import AsyncElasticsearch
|
||||||
|
from elasticsearch._async.helpers import async_scan, async_bulk
|
||||||
|
|
||||||
|
DB = {}
|
||||||
|
INDEX = 'claims'
|
||||||
|
|
||||||
|
|
||||||
|
async def generate_support_amounts(client: AsyncElasticsearch):
|
||||||
|
async for doc in async_scan(client):
|
||||||
|
DB[doc['_id']] = doc['_source']['support_amount']
|
||||||
|
if len(DB) > 10:
|
||||||
|
break
|
||||||
|
pprint(DB)
|
||||||
|
|
||||||
|
|
||||||
|
def generate_support_to_trending():
|
||||||
|
for claim_id, amount in DB.items():
|
||||||
|
yield {'doc': {"trending_mixed": amount}, '_id': claim_id, '_index': INDEX, '_op_type': 'update'}
|
||||||
|
|
||||||
|
|
||||||
|
async def write_trending(client: AsyncElasticsearch):
|
||||||
|
await async_bulk(client, generate_support_to_trending())
|
||||||
|
|
||||||
|
|
||||||
|
def get_client(host='localhost', port=9201):
|
||||||
|
hosts = [{'host': host, 'port': port}]
|
||||||
|
return AsyncElasticsearch(hosts, timeout=port)
|
||||||
|
|
||||||
|
|
||||||
|
async def run():
|
||||||
|
client = get_client()
|
||||||
|
await generate_support_amounts(client)
|
||||||
|
await write_trending(client)
|
||||||
|
for claim_id, value in DB.items():
|
||||||
|
if value > 0:
|
||||||
|
break
|
||||||
|
doc = await client.get(INDEX, claim_id)
|
||||||
|
pprint(doc)
|
||||||
|
pprint(DB[claim_id])
|
||||||
|
await client.close()
|
||||||
|
|
||||||
|
|
||||||
|
asyncio.get_event_loop().run_until_complete(run())
|
Loading…
Reference in a new issue