弹性搜索:两级嵌套映射,估计文档总数

时间:2017-01-09 07:23:13

标签: elasticsearch nested

我的映射为:

"properties": {
  "parents": {
    "type": "nested",
    "properties": {
      "parent_id": {
        "type": "integer",
        "doc_values": false
      },
      "child": {
        "type": "nested",
        "properties": {
          "is_deleted": {
            "type": "boolean",
            "doc_values": false
          },
          "child_id": {
            "type": "integer",
            "doc_values": false
          },
          "timestamp": {
            "type": "long",
            "doc_values": false
          }
        }
      }
    }
  },
  "other_ID": {
    "type": "string",
    "index": "not_analyzed",
    "doc_values": false
  }
}

我已为此索引分配了5个分片(我的弹性搜索群集有7个节点),但不确定这是否足够。

  

每个Elasticsearch分片都是Lucene索引。有一个最大数量   您可以在单个Lucene索引中拥有的文档。截至LUCENE-5843,   限制是2,147,483,519(= Integer.MAX_VALUE - 128)个文件。您   可以使用_cat / shards api监视分片大小。

假设有x唯一_ID,并且每个_ID都有y个父母,每个家长都会有z个孩子。我的索引中的总文件数是多少?

更新:

  

防止错误定义的映射数量的嵌套字段   每个指数可以定义的限制为50

这是否意味着我在_ID中不能拥有超过50个父母?

1 个答案:

答案 0 :(得分:0)

您将看到的真实文档数是仅顶级文档的数量,而不是嵌套文档的数量,即使每个嵌套文档都是Lucene文档。

因此,如果您要查找Lucene文档的总数,如果每个y顶级文档都有parents个父项,并且每个z元素都有x * (1 + (y * (1 + z)))子元素,然后对于每个顶级文档,您将获得x Lucene文档。

它是否适合您的群集,完全取决于yzCOVERALLS_REPO_TOKEN的值。