Estoy tratando de implementar un enfoque de índices múltiples usando elasticsearch-dsl . Básicamente hay dos pasos:
1. Crear alias:
PUT /tweets_1/_alias/tweets_search PUT /tweets_1/_alias/tweets_index2. Cambie el alias cuando sea necesario:
POST /_aliases { "actions": [ { "add": { "index": "tweets_2", "alias": "tweets_search" }}, { "remove": { "index": "tweets_1", "alias": "tweets_index" }}, { "add": { "index": "tweets_2", "alias": "tweets_index" }} ] }Solo pude implementar el paso 1 usando elasticsearch-py (no el dsl):
from elasticsearch.client import IndicesClient IndicesClient(client).("tweets_1", "tweets_search") IndicesClient(client).("tweets_1", "tweets_index")No tengo idea de cómo hacer eso para el paso 2. Entonces, ¿cuál sería el equivalente en elasticsearch-dsl (o al menos en elasticsearch-py)?
Para implementar eso necesitas usar elasticsearch-py :
from elasticsearch import Elasticsearch es = Elasticsearch() # use es.indices instead of instantiating IndicesClient es.indices.put_alias(index='tweets_1', name='tweets_search') es.indices.put_alias(index='tweets_1', name='tweets_index') es.indices.update_aliases({ "actions": [ { "add": { "index": "tweets_2", "alias": "tweets_search" }}, { "remove": { "index": "tweets_1", "alias": "tweets_index" }}, { "add": { "index": "tweets_2", "alias": "tweets_index" }} ] })index_list_for_realias = [...] aliases_list_to_realias = [...] for i in index_list_for_realias: print(i) for j in aliases_list_to_realias: es.indices.put_alias(index=i, name="logstash5-uni-" + j, body={ "filter": { "term": { "uni": j } } } )