在Serverless日志分析型应用中,您可以通过可视化方式管理您的索引,例如创建、修改、删除索引等。本文介绍创建索引的方法,并介绍如何在索引中写入数据并进行数据查询。
前提条件
已创建日志分析型应用。具体操作,请参见创建日志分析型应用。
索引特点
日志分析型应用中的索引特点如下:
索引内置分片自动调优、智能滚动功能,您无需关注索引滚动、别名等复杂操作,读写时仅需指定索引名称。
索引中的字段均采用以下规定:
索引只支持检索,不支持算分(对文档的相关性进行评估)。
检索时会忽略索引字段中的大小写。
text类型的字段,不支持通配符查询。
默认分词下,单个词长度不超过255个字符。
未开启主键写入时,索引不支持按id进行读写,返回的id也没有实际意义。
各个字段及数组内字段的顺序会变化,对字段顺序有依赖的请谨慎使用。
部分类型的字段格式会发生改变,例如时间字段、带引号的数字等。解决格式变化的方法如下:
时间字段:指定时间字段的format。
带引号的数字:写入时不带引号。
使用科学计数法存储数值型的double、long类型字段:对double、long 类型不进行科学计数法格式数据存储。
创建索引
在顶部菜单栏,选择目标地域。
说明目前仅支持华东1(杭州)、华北2(北京)、华东2(上海)和华南1(深圳)地域。
在左侧导航栏,单击应用管理。
在应用管理页面,单击目标应用名称。
在左侧导航栏,选择
。单击创建索引。
在创建索引面板,填写索引配置信息。
大类
项目
描述
基础配置
索引名称
自定义的索引名称。
字段映射
手动设置索引的字段映射。
字段名称:自定义索引数据的字段名称。
字段类型:可供选择的数据类型包括boolean、long、double、keyword、text、date、object、match_only_text。如果您需要设置更多的字段类型,可以切换至JSON编辑模式中编辑。
说明支持的字段类型,请参见 Field data types。
date类型的字段格式:请参见mapping-date-format。
开启索引:启用索引后会对该字段构建索引,字段可用于检索。
开启统计:暂不支持修改该配置。开启统计后支持对字段值做统计分析,但会增加索引存储空间。
分词符:text字段类型支持编辑分词符,分词符的作用是将字段内容拆分成多个词。默认的分词符为
whitespace'";=()[]{}?@&<>/:\n\t\r#\|,
。
通过输入样例自动配置生成索引的字段映射。
单击输入样例自动配置,在输入框内输入JSON格式的数据,单击确定,平台校验无误后,自动将字段映射到字段映射表中。
JSON格式的数据样例:
{ "bool_field": true, "date_field": "20220126", "double_field": 3.14, "keyword_field": "这是一行不需要分词的文本", "long_field": 126, "object_field": { "sub_field": 2022 }, "text_field": "这是一行需要分词的文本,文本长度超过36个字符的会被推断为需要分词,定义为text类型" }
在JSON模式下设置字段映射。
在字段映射区域的右上角,单击切换至JSON 编辑模式,在JSON模式下编辑字段映射。
说明切换模式时,配置信息将自动在两种模式间进行同步。
JSON示例:
{ "settings": { "index": { "apack": { "protection": { "index": { "forbid_id": true } } }, "merge_dynamic_fields": { "enable": false }, "timeseries": { "expiration_days": 7, "advanced_indexing_optimization": { "enabled": true }, "auto_data_organization": { "enabled": true } }, "sort": { "field": [ "date_field" ], "order": [ "desc" ] } } }, "mappings": { "dynamic": "true", "properties": { "bool_field": { "type": "boolean", "doc_values": true, "index": true }, "date_field": { "type": "date", "format": "basic_date", "doc_values": true, "index": true }, "double_field": { "type": "double", "doc_values": true, "index": true }, "keyword_field": { "type": "keyword", "doc_values": true, "index": true }, "long_field": { "type": "long", "doc_values": true, "index": true }, "object_field": { "type": "object", "properties": { "sub_field": { "type": "long", "doc_values": true, "index": true } } }, "text_field": { "type": "text", "analyzer": "lineAnalyzer", "doc_values": false, "index": true, "term_hash_enable": true } } } }
时间字段
选择用于记录数据时间的字段,字段类型需为date类型。
说明索引创建完成后,不支持修改和删除时间字段。
数据保存时间
限时保存:保存索引数据的时间,可选范围为1~365天。
永久保存:永久保存索引数据。
高级配置
带主键写入
开启后,写入CU及存储空间都会显著增加,更新文档时可能出现更新失败或重复写入文档的情况。
自动数据整理
开启后,定期通过无损的force merge对索引进行整理,提升查询性能和优化存储空间,但会带来额外的写入CU消耗。
说明force merge操作带来的资源消耗可以在监控中心查看。
写入深度优化
开启后,会自动调整索引结构,对索引的写入性能及存储成本有明显优化。但存在使用限制,如不支持前缀查询等,具体信息请参见写入深入优化。
动态字段配置
索引接收到的写入字段不在字段映射中的处理方式:
识别:根据新字段的数据类型,自动添加到字段映射中。
说明开启动态字段识别,即将索引的dynamic字段值设置为true。
新字段为text类型时,默认采用lineAnalyzer。
对默认text类型字段进行match_phrase查询时会有查询截断行为,可能导致查询结果不准确。
合并:不添加到字段映射中,合并到@_all_@。
忽略:不做任何处理,仅在原文中保留。
报错:检测到新字段时抛出异常。
单击确定。
索引数据写入和查询
登录Serverless应用的Kibana控制台。具体操作,请参见通过Kibana使用Serverless应用。
在页面左上角单击图标,选择
。您可以执行以下代码对索引进行操作。
查看索引映射详情:
GET test/_mapping
返回结果:
{ "test" : { "mappings" : { "dynamic" : "true", "_meta" : { "app_id" : "qning-***", "index_name" : "test" }, "dynamic_templates" : [ { "match_tag" : { "match" : "*", "match_mapping_type" : "string", "mapping" : { "analyzer" : "lineAnalyzer", "term_hash_enable" : true, "type" : "match_only_text" } } } ], "properties" : { "bool_field" : { "type" : "boolean" }, "date_field" : { "type" : "date", "format" : "basic_date" }, "double_field" : { "type" : "double" }, "keyword_field" : { "type" : "keyword", "term_hash_enable" : true }, "long_field" : { "type" : "long" }, "object_field" : { "properties" : { "sub_field" : { "type" : "long" } } }, "text_field" : { "type" : "match_only_text", "analyzer" : "lineAnalyzer", "term_hash_enable" : true } } } } }
索引中插入数据:
POST test/_bulk { "index" : {} } {"bool_field":true,"date_field":"20230901","double_field":3.14,"keyword_field":"Elasticsearch Serverless","long_field":126,"object_field":{"sub_field":2023},"text_field":"Elasticsearch Serverless服务可以为您提供简单易用、弹性灵活、开箱即用的Elasticsearch产品体验,您无须管理Elasticsearch集群资源及配置。"}
返回结果:
{ "took" : 20, "errors" : false, "items" : [ { "index" : { "_index" : ".ts@test@20240920170712", "_type" : "_doc", "_id" : "3yewDpIBzu2YeHCV92dK", "_version" : 1, "result" : "created", "_shards" : { "total" : 2, "successful" : 2, "failed" : 0 }, "_seq_no" : 0, "_primary_term" : 1, "status" : 201 } } ] }
查询索引中的数据:
GET test/_search { "query": { "match": { "keyword_field": "Elasticsearch Serverless" } } }
返回结果:
{ "took" : 39, "timed_out" : false, "_shards" : { "total" : 6, "successful" : 6, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 1, "relation" : "eq" }, "max_score" : 0.2876821, "hits" : [ { "_index" : ".ts@test@20240920170712", "_type" : "_doc", "_id" : "f_J2uxDpIBBqbPspEIglF4", "_score" : 0.2876821, "_source" : { "object_field" : { "sub_field" : 2023 }, "text_field" : "Elasticsearch Serverless服务可以为您提供简单易用、弹性灵活、开箱即用的Elasticsearch产品体验,您无须管理Elasticsearch集群资源及配置。", "bool_field" : true, "long_field" : 126, "double_field" : 3.14, "keyword_field" : "Elasticsearch Serverless", "date_field" : "20230901" } } ] } }
其他操作
您可以在应用的索引列表页面,查看、修改索引配置,或删除索引。
项目 | 说明 |
查看索引配置 | 在目标索引的操作列,单击修改配置,查看索引的具体配置。 |
修改索引配置 | 在目标索引的操作列,单击修改配置,修改索引的配置。
|
删除索引 | 在目标索引的操作列,单击删除,删除索引。 |