【发布时间】:2019-08-07 14:07:13
【问题描述】:
我正在为大量文档(大约 150 000 个)进行二进制分类的文档可视化工作。挑战在于如何向最终用户呈现一般视觉信息,以便他们对每个类别(正面/负面)的主要“概念”有所了解。由于每个文档都有一组相关的主题,我考虑通过聚合来询问 Elasticsearch 对正面分类文档的前 20 个主题,然后对负面文档进行同样的处理。
我创建了一个 python 脚本,从 Elastic 下载数据并对文档进行分类,但问题是数据集上的预测没有在 Elasticsearch 上注册,所以我不能要求某个类别的前 20 个主题.首先,我考虑在弹性中创建一个查询来请求聚合并传递一个匹配项
由于我有正面/负面文档的 id,我可以编写一个查询来检索主题的聚合,但是在查询中我应该提供大量的文档 IDS 来指示,例如,只有正面文档.这是不可能的,因为端点有限制,我不能传递 50 000 个 ID,例如:
"query": {
"bool": {
"should": [
{"match": {"id_str": "939490553510748161"}},
{"match": {"id_str": "939496983510742348"}}
...
],
"minimum_should_match" : 1
}
},
"aggs" : { ... }
所以我尝试在Elastic索引中注册分类的预测类别,但是由于文档量非常庞大,大约需要半小时(相比之下运行分类不到一分钟)......仅用于存储预测就需要很多时间……然后我还需要查询索引以获取用于可视化的正确数据。要更新文档,我使用的是:
for id in docs_ids:
es.update(
index=kwargs["index"],
doc_type=kwargs["doc_type"],
id=id,
body={"doc": {
"prediction": kwargs["category"]
}}
)
您知道更快更新预测的替代方法吗?
【问题讨论】:
-
我建议您阅读此主题。尤其是散装部分:) elastic.co/guide/en/elasticsearch/reference/6.7/…
标签: elasticsearch elasticsearch-py