使用 murmur3 字段编辑

murmur3 通常在多字段中使用,以便在索引中存储原始值及其哈希值

PUT my-index-000001
{
  "mappings": {
    "properties": {
      "my_field": {
        "type": "keyword",
        "fields": {
          "hash": {
            "type": "murmur3"
          }
        }
      }
    }
  }
}

此类映射允许引用 my_field.hash 以获取 my_field 字段值的哈希值。这仅在运行 cardinality 聚合时有用

# Example documents
PUT my-index-000001/_doc/1
{
  "my_field": "This is a document"
}

PUT my-index-000001/_doc/2
{
  "my_field": "This is another document"
}

GET my-index-000001/_search
{
  "aggs": {
    "my_field_cardinality": {
      "cardinality": {
        "field": "my_field.hash" 
      }
    }
  }
}

统计 my_field.hash 字段上的唯一值

直接在 my_field 字段上运行 cardinality 聚合将产生相同的结果,但是如果该字段具有高基数,则使用 my_field.hash 可能会提高速度。另一方面,不建议在数值字段和几乎不唯一的字符串字段上使用 murmur3 字段,因为使用 murmur3 字段不太可能显着提高速度,反而会增加存储索引所需的磁盘空间量。