哈希字段类型(Murmur3) #
murmur3 字段类型在索引时计算字段值的 MurmurHash3 128 位哈希值,并将哈希值存储为 doc values。这在 cardinality 聚合中可以提供更高的精度,因为直接使用预计算的哈希值而非运行时计算。
前置条件 #
murmur3 字段类型由 mapper-murmur3 插件提供,需要确认插件已安装:
bin/easysearch-plugin list
# 应包含 mapper-murmur3
创建映射 #
PUT my_index
{
"mappings": {
"properties": {
"user_id": {
"type": "keyword",
"fields": {
"hash": {
"type": "murmur3"
}
}
}
}
}
}
使用示例 #
Cardinality 聚合优化 #
使用 murmur3 子字段进行基数统计,可以获得更高的精度:
GET my_index/_search
{
"size": 0,
"aggs": {
"unique_users": {
"cardinality": {
"field": "user_id.hash"
}
}
}
}
限制 #
murmur3字段不支持搜索查询(不可检索)- 只能用于聚合和排序
- 字段值在索引时计算并存储,会增加少量索引体积
- 主要用途是优化
cardinality聚合的精度