我开始使用重要的术语聚合来查看哪些关键字在文档组中比我索引的整个文档集更重要。
在将许多文档编入索引之前,它一切正常。然后,对于以前使用的相同查询,elasticsearch只会说:
SearchPhaseExecutionException[Failed to execute phase [query],
all shards failed; shardFailures {[OIWBSjVzT1uxfxwizhS5eg][demo_paragraphs][0]:
CircuitBreakingException[Data too large, data for field [text]
would be larger than limit of [633785548/604.4mb]];
我的查询如下所示:
POST /demo_paragraphs/_search
{
"query": {
"match": {
"django_target_id": 1915661
}
},
"aggregations" : {
"signKeywords" : {
"significant_terms" : {
"field" : "text"
}
}
}
}
文件结构:
"_source": {
"django_ct": "citations.citation",
"django_target_id": 1915661,
"django_id": 3414077,
"internal_citation_id": "CR7_151",
"django_source_id": 1915654,
"text": "Mucin 1 (MUC1) is a protein heterodimer that is overexpressed in lung cancers [6]. MUC1 consists of two subunits, an N-terminal extracellular subunit (MUC1-N) and a C-terminal transmembrane subunit (MUC1-C). Overexpression of MUC1 is sufficient for the induction of anchorage independent growth and tumorigenicity [7]. Other studies have shown that the MUC1-C cytoplasmic domain is responsible for the induction of the malignant phenotype and that MUC1-N is dispensable for transformation [8]. Overexpression of",
"id": "citations.citation.3414077",
"num_distinct_citations": 0
}
我索引的数据是来自科学论文的段落。没有文件真的很大。
有关如何分析或解决问题的任何想法?
答案 0 :(得分:2)
如果要在一台计算机上计算结果的数据集很大,则可能需要多个节点。
在计划分片分发时要慎重。确保分片正确分布,以便在计算繁重查询时每个节点都具有同等的压力。大数据集的良好拓扑是主数据搜索配置,其中您有一个充当主节点的节点(没有数据,没有在此节点上运行查询)。一些节点专用于保存数据(分片),一些节点专用于执行查询(它们不保存数据,它们使用数据节点进行部分查询执行并组合结果)。对于初学者Netflix正在使用此拓扑Netflix raigad
PawełRóg是对的,你需要更多的内存。对于启动器增加每个节点可用的Java堆大小。有关详细信息,请访问此网站:ElasticSearch configuration 你必须重新研究多少内存就足够了。有时太多RAM实际上会降低ES的速度(除非在最新版本中修复了它)。
答案 1 :(得分:0)
我认为有简单的解决方案。 请给ES更多RAM:D聚合需要很多内存。
答案 2 :(得分:0)
请注意,进入elasticsearch 6.0后,会出现新的significant_text
聚合,不需要字段数据。见https://www.elastic.co/guide/en/elasticsearch/reference/master/search-aggregations-bucket-significanttext-aggregation.html