创建日志流索引
功能介绍
该接口用于向指定日志流创建索引。
调用方法
请参见如何调用API。
URI
POST /v1.0/{project_id}/groups/{group_id}/stream/{stream_id}/index/config
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
project_id |
是 |
String |
项目ID,获取方式请参见:获取项目ID,获取账号ID,日志组ID、日志流ID 最小长度:36 最大长度:36 |
group_id |
是 |
String |
日志组ID,获取方式请参见:获取项目ID,获取账号ID,日志组ID、日志流ID 最小长度:36 最大长度:36 |
stream_id |
是 |
String |
日志流ID,获取方式请参见:获取项目ID,获取账号ID,日志组ID、日志流ID 最小长度:36 最大长度:36 |
请求参数
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
X-Auth-Token |
是 |
String |
从IAM服务获取的用户Token,获取方式请参见:获取用户Token |
Content-Type |
是 |
String |
该字段填为:application/json;charset=UTF-8 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
logStreamId |
是 |
String |
日志流ID |
fullTextIndex |
是 |
LTSFullTextIndexInfo object |
全文索引配置 |
fields |
否 |
Array of LTSFieldsInfo objects |
字段索引配置 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
enable |
是 |
Boolean |
是否开启全文索引 |
caseSensitive |
是 |
Boolean |
是否大小写敏感 |
includeChinese |
是 |
Boolean |
是否包含中文 |
tokenizer |
是 |
String |
自定义分词符 最小长度:0 最大长度:128 |
ascii |
否 |
Array of strings |
特殊分词符 最小长度:1 最大长度:3 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
fieldType |
是 |
String |
字段类型 |
fieldName |
是 |
String |
字段名称 最小长度:1 最大长度:256 |
caseSensitive |
否 |
Boolean |
是否大小写敏感 缺省值:false |
includeChinese |
否 |
Boolean |
是否包含中文 缺省值:false |
tokenizer |
是 |
String |
分词符 最小长度:0 最大长度:128 |
quickAnalysis |
否 |
Boolean |
是否快速分析 缺省值:false |
ascii |
否 |
Array of strings |
特殊分词符 |
ltsSubFieldsInfoList |
否 |
Array of LTSSubFieldsInfo objects |
json字段信息 |
响应参数
状态码: 200
参数 |
参数类型 |
描述 |
---|---|---|
errorCode |
String |
错误码 |
errorMessage |
String |
错误信息描述 |
result |
String |
结果 |
isQueryComplete |
Boolean |
是否查询完成 |
状态码: 400
参数 |
参数类型 |
描述 |
---|---|---|
errorCode |
String |
错误码 最小长度:8 最大长度:36 |
errorMessage |
String |
错误描述 最小长度:2 最大长度:512 |
状态码: 401
参数 |
参数类型 |
描述 |
---|---|---|
errorCode |
String |
错误码 最小长度:8 最大长度:36 |
errorMessage |
String |
错误描述 最小长度:2 最大长度:512 |
状态码: 500
参数 |
参数类型 |
描述 |
---|---|---|
errorCode |
String |
错误码 最小长度:8 最大长度:36 |
errorMessage |
String |
错误描述 最小长度:2 最大长度:512 |
请求示例
该接口用于向指定日志流创建索引。
POST https://{endpoint}/v1.0/{project_id}/groups/{group_id}/stream/{stream_id}/index/config { "logStreamId" : "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "fullTextIndex" : { "enable" : true, "caseSensitive" : false, "includeChinese" : true, "tokenizer" : ", '\";=()[]{}@&<>/:\\n\\t\\r" }, "fields" : [ { "fieldType" : "long", "fieldName" : "fieldName1", "caseSensitive" : false, "includeChinese" : true, "tokenizer" : "", "quickAnalysis" : true }, { "fieldType" : "string", "fieldName" : "fieldName2", "caseSensitive" : false, "includeChinese" : true, "tokenizer" : "", "quickAnalysis" : true } ] }
响应示例
状态码: 200
添加索引配置成功
{ "errorCode" : "SVCSTG.ALS.200200", "errorMessage" : "add or update indexConfig successfully", "isQueryComplete" : true, "result" : "493d04ce-5130-4b07-88be-c5ae3b50bccb" }
状态码: 400
请求参数错误,请根据响应体内容进行修改
{ "errorCode" : "SVCSTG.ALS.200201", "errorMessage" : "IndexConfigInfo check failed.", "isQueryComplete" : true }
状态码: 401
认证鉴权失败,排查认证信息是否过期
{ "error_msg" : "Incorrect IAM authentication information: decrypt token fail", "error_code" : "APIGW.0301", "request_id" : "b16cc9d789f34cd5196d8df065341788" }
状态码: 500
表示服务后端已经接收到请求,但服务内部处理错误
{ "highLightFields" : { }, "errorCode" : "LTS.0203", "errorMessage" : "Internal Server Error", "result" : null, "encoded_authorization_message" : null, "isQueryComplete" : true }
SDK代码示例
SDK代码示例如下。
该接口用于向指定日志流创建索引。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
package com.huaweicloud.sdk.test; import com.huaweicloud.sdk.core.auth.ICredential; import com.huaweicloud.sdk.core.auth.BasicCredentials; import com.huaweicloud.sdk.core.exception.ConnectionException; import com.huaweicloud.sdk.core.exception.RequestTimeoutException; import com.huaweicloud.sdk.core.exception.ServiceResponseException; import com.huaweicloud.sdk.lts.v2.region.LtsRegion; import com.huaweicloud.sdk.lts.v2.*; import com.huaweicloud.sdk.lts.v2.model.*; import java.util.List; import java.util.ArrayList; public class CreateLogStreamIndexSolution { public static void main(String[] args) { // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment String ak = System.getenv("CLOUD_SDK_AK"); String sk = System.getenv("CLOUD_SDK_SK"); String projectId = "{project_id}"; ICredential auth = new BasicCredentials() .withProjectId(projectId) .withAk(ak) .withSk(sk); LtsClient client = LtsClient.newBuilder() .withCredential(auth) .withRegion(LtsRegion.valueOf("<YOUR REGION>")) .build(); CreateLogStreamIndexRequest request = new CreateLogStreamIndexRequest(); request.withGroupId("{group_id}"); request.withStreamId("{stream_id}"); LTSIndexConfigInfo body = new LTSIndexConfigInfo(); List<LTSFieldsInfo> listbodyFields = new ArrayList<>(); listbodyFields.add( new LTSFieldsInfo() .withFieldType(LTSFieldsInfo.FieldTypeEnum.fromValue("long")) .withFieldName("fieldName1") .withCaseSensitive(false) .withIncludeChinese(true) .withTokenizer("") .withQuickAnalysis(true) ); listbodyFields.add( new LTSFieldsInfo() .withFieldType(LTSFieldsInfo.FieldTypeEnum.fromValue("string")) .withFieldName("fieldName2") .withCaseSensitive(false) .withIncludeChinese(true) .withTokenizer("") .withQuickAnalysis(true) ); LTSFullTextIndexInfo fullTextIndexbody = new LTSFullTextIndexInfo(); fullTextIndexbody.withEnable(true) .withCaseSensitive(false) .withIncludeChinese(true) .withTokenizer(", '";=()[]{}@&<>/:\n\t\r"); body.withLogStreamId("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"); body.withFields(listbodyFields); body.withFullTextIndex(fullTextIndexbody); request.withBody(body); try { CreateLogStreamIndexResponse response = client.createLogStreamIndex(request); System.out.println(response.toString()); } catch (ConnectionException e) { e.printStackTrace(); } catch (RequestTimeoutException e) { e.printStackTrace(); } catch (ServiceResponseException e) { e.printStackTrace(); System.out.println(e.getHttpStatusCode()); System.out.println(e.getRequestId()); System.out.println(e.getErrorCode()); System.out.println(e.getErrorMsg()); } } } |
该接口用于向指定日志流创建索引。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# coding: utf-8 import os from huaweicloudsdkcore.auth.credentials import BasicCredentials from huaweicloudsdklts.v2.region.lts_region import LtsRegion from huaweicloudsdkcore.exceptions import exceptions from huaweicloudsdklts.v2 import * if __name__ == "__main__": # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment ak = os.environ["CLOUD_SDK_AK"] sk = os.environ["CLOUD_SDK_SK"] projectId = "{project_id}" credentials = BasicCredentials(ak, sk, projectId) client = LtsClient.new_builder() \ .with_credentials(credentials) \ .with_region(LtsRegion.value_of("<YOUR REGION>")) \ .build() try: request = CreateLogStreamIndexRequest() request.group_id = "{group_id}" request.stream_id = "{stream_id}" listFieldsbody = [ LTSFieldsInfo( field_type="long", field_name="fieldName1", case_sensitive=False, include_chinese=True, tokenizer="", quick_analysis=True ), LTSFieldsInfo( field_type="string", field_name="fieldName2", case_sensitive=False, include_chinese=True, tokenizer="", quick_analysis=True ) ] fullTextIndexbody = LTSFullTextIndexInfo( enable=True, case_sensitive=False, include_chinese=True, tokenizer=", '";=()[]{}@&<>/:\n\t\r" ) request.body = LTSIndexConfigInfo( log_stream_id="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", fields=listFieldsbody, full_text_index=fullTextIndexbody ) response = client.create_log_stream_index(request) print(response) except exceptions.ClientRequestException as e: print(e.status_code) print(e.request_id) print(e.error_code) print(e.error_msg) |
该接口用于向指定日志流创建索引。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
package main import ( "fmt" "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic" lts "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/lts/v2" "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/lts/v2/model" region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/lts/v2/region" ) func main() { // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment ak := os.Getenv("CLOUD_SDK_AK") sk := os.Getenv("CLOUD_SDK_SK") projectId := "{project_id}" auth := basic.NewCredentialsBuilder(). WithAk(ak). WithSk(sk). WithProjectId(projectId). Build() client := lts.NewLtsClient( lts.LtsClientBuilder(). WithRegion(region.ValueOf("<YOUR REGION>")). WithCredential(auth). Build()) request := &model.CreateLogStreamIndexRequest{} request.GroupId = "{group_id}" request.StreamId = "{stream_id}" caseSensitiveFields:= false includeChineseFields:= true quickAnalysisFields:= true caseSensitiveFields1:= false includeChineseFields1:= true quickAnalysisFields1:= true var listFieldsbody = []model.LtsFieldsInfo{ { FieldType: model.GetLtsFieldsInfoFieldTypeEnum().LONG, FieldName: "fieldName1", CaseSensitive: &caseSensitiveFields, IncludeChinese: &includeChineseFields, Tokenizer: "", QuickAnalysis: &quickAnalysisFields, }, { FieldType: model.GetLtsFieldsInfoFieldTypeEnum().STRING, FieldName: "fieldName2", CaseSensitive: &caseSensitiveFields1, IncludeChinese: &includeChineseFields1, Tokenizer: "", QuickAnalysis: &quickAnalysisFields1, }, } fullTextIndexbody := &model.LtsFullTextIndexInfo{ Enable: true, CaseSensitive: false, IncludeChinese: true, Tokenizer: ", '";=()[]{}@&<>/:\n\t\r", } request.Body = &model.LtsIndexConfigInfo{ LogStreamId: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", Fields: &listFieldsbody, FullTextIndex: fullTextIndexbody, } response, err := client.CreateLogStreamIndex(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) } } |
更多编程语言的SDK代码示例,请参见API Explorer的代码示例页签,可生成自动对应的SDK代码示例。
状态码
状态码 |
描述 |
---|---|
200 |
添加索引配置成功 |
400 |
请求参数错误,请根据响应体内容进行修改 |
401 |
认证鉴权失败,排查认证信息是否过期 |
500 |
表示服务后端已经接收到请求,但服务内部处理错误 |
错误码
请参见错误码。