elasticsearch elasticsearch中的前缀自动生成字段
我有一个带有一些elasticsearch elasticsearch中的前缀自动生成字段,elasticsearch,kibana,elasticsearch,Kibana,我有一个带有一些uid的文档。我想创建一个索引为not_analysis的字段,该字段自动生成为uid的两个字母前缀(或后缀) 有没有办法创建这样一个模板来自动计算该字段 该用例用于显示Kibana上的向下采样(例如,过滤器是prefix='00')统计信息(因此唯一计数聚合将花费更少的时间) 我已经成功地使用了它,但在将文档写入服务器之前,我在客户端上创建了前缀字段。索引前缀可以使用自定义分析器生成,带有关键字标记器和截断标记过滤器。下面是一个示例,说明如何索引包含字段test前两个字符的字段
uid
的文档。我想创建一个索引为not_analysis
的字段,该字段自动生成为uid
的两个字母前缀(或后缀)
有没有办法创建这样一个模板来自动计算该字段
该用例用于显示Kibana上的向下采样(例如,过滤器是prefix='00')统计信息(因此唯一计数
聚合将花费更少的时间)
我已经成功地使用了它,但在将文档写入服务器之前,我在客户端上创建了前缀字段。索引前缀可以使用自定义分析器生成,带有
关键字
标记器和截断
标记过滤器。下面是一个示例,说明如何索引包含字段test
前两个字符的字段test\u前缀
:
curl -XPUT localhost:9200/test-idx -d '{
"settings": {
"index": {
"number_of_shards": 1,
"number_of_replicas": 0
},
"analysis": {
"analyzer": {
"prefix": {
"tokenizer": "keyword",
"filter": "prefix"
}
},
"filter": {
"prefix": {
"type": "truncate",
"length": 2
}
}
}
},
"mappings": {
"doc": {
"properties": {
"test": {
"type": "string",
"copy_to": "test_prefix"
},
"test_prefix": {
"type": "string",
"analyzer": "prefix"
}
}
}
}
}'
我使用了edgeNGram标记器,似乎它提供了相同的结果
{
"settings": {
"analysis": {
"analyzer": {
"edge_ngram_analyzer": {
"tokenizer": "edge_ngram_tokenizer"
}
},
"tokenizer": {
"edge_ngram_tokenizer": {
"type": "edgeNGram",
"min_gram": "2",
"max_gram": "2"
}
}
}
}
}
如果您对其他用户的帖子有评论,请将其作为评论而不是答案发布。你需要一些投票,然后才能发表评论,但与此同时,不要试图绕过系统。我已经从你的回答中删除了这个评论。谢谢@imotov。我已经实现了Nir的答案。您的方法在性能方面更可取吗?我怀疑您是否会看到这两者之间的性能差异。