【发布时间】:2019-10-07 20:03:34
【问题描述】:
我正在尝试创建一个从 mongo 中提取、处理数据并加载到弹性中的 ETL。我会每天加载,所以我想用当前日期命名我的索引。这将有助于我以后需要对第一个索引进行处理。 我使用了 elasticsearch dsl 指南:https://elasticsearch-dsl.readthedocs.io/en/latest/persistence.html 我遇到的问题来自我在课堂上的一点经验。我不知道如何从类中重置索引名称。 这是我的课程代码 (custom_indices.py):
from elasticsearch_dsl import Document, Date, Integer, Keyword, Text
from elasticsearch_dsl.connections import connections
from elasticsearch_dsl import Search
import datetime
class News(Document):
title = Text(analyzer='standard', fields={'raw': Keyword()})
manual_tagging = Keyword()
class Index:
name = 'processed_news_'+datetime.datetime.now().strftime("%Y%m%d")
def save(self, ** kwargs):
return super(News, self).save(** kwargs)
def is_published(self):
return datetime.now() >= self.processed
这是我为该类创建实例的代码部分:
from custom_indices import News
import elasticsearch
import elasticsearch_dsl
from elasticsearch_dsl.connections import connections
import pandas as pd
import datetime
connections.create_connection(hosts=['localhost'])
News.init()
for index, doc in df.iterrows():
new_insert = News(meta={'id': doc.url_hashed},
title = doc.title,
manual_tagging = doc.customTags,
)
new_insert.save()
每次我调用“新闻”类时,我都希望有一个新名称。但是,即使我再次加载该类,名称也不会改变(from custom_indices import News)。我知道这只是我在测试时遇到的一个问题,但我想知道如何强制“重置”。实际上,我原本想在循环之前用这一行更改类外的名称:
News.Index.name = "NEW_NAME"
然而,这并没有奏效。我仍然看到类上定义的名称。 有人可以帮忙吗? 非常感谢! PS:这一定只是一个面向对象的编程问题。对我对这个主题的无知表示歉意。
【问题讨论】:
标签: python elasticsearch elasticsearch-dsl