弹性搜索中的前缀自动生成字段

时间:2015-09-20 14:15:44

标签: elasticsearch kibana

我有一个uid的文档。我想创建一个索引为not_analyzed的字段,该字段自动生成为uid的2个字母前缀(或后缀)。

有没有办法创建这样一个自动计算该字段的模板?

用例用于显示关于Kibana的抽样(过滤器是前缀=' 00'例如)统计信息(因此unique count聚合将花费更少的时间)。

我已成功使用它,但在将文档写入服务器之前,我在客户端上创建了前缀字段。

1 个答案:

答案 0 :(得分:1)

索引前缀可以使用带有keyword标记生成器和truncate标记过滤器的自定义分析器构建来完成。以下是如何索引包含字段test_prefix的前2个字符的字段test的示例:

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"
                }

            }
        }
    }
}'