更新时间:2026-02-05 GMT+08:00
分享

修改索引 - UpdatePipeIndex

功能介绍

修改索引

调用方法

请参见如何调用API

授权信息

账号具备所有API的调用权限,如果使用账号下的IAM用户调用当前API,该IAM用户需具备调用API所需的权限,具体权限要求请参见权限和授权项

URI

PUT /v1/{project_id}/workspaces/{workspace_id}/siem/pipes/{pipe_id}/index

表1 路径参数

参数

是否必选

参数类型

描述

project_id

String

参数解释:

项目ID,用于明确项目归属,配置后可通过该ID查询项目下资产,可以通过调用API获取,也可以从控制台获取。获取项目ID

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

workspace_id

String

工作空间ID

pipe_id

String

管道ID

请求参数

表2 请求Header参数

参数

是否必选

参数类型

描述

X-Auth-Token

String

参数解释:

用户Token,通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。获取用户Token

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

表3 请求Body参数

参数

是否必选

参数类型

描述

mapping

Map<String,KeyIndex>

索引映射信息

pipe_id

String

数据管道ID

status

String

索引状态;open 开启,closed 关闭

timestamp_field

String

时间戳字段名称

表4 KeyIndex

参数

是否必选

参数类型

描述

is_chinese_exist

Boolean

是否包含中文

properties

Map<String,KeyIndex>

嵌套结构

type

String

参数解释:

字段类型

  • text 全文索引字段

  • keyword 关键字类型,适用于精确匹配

  • long 长整型

  • integer 整型

  • double 双精度浮点数

  • float 单精度浮点数

  • date 日期类型

约束限制

不涉及

取值范围:

  • text

  • keyword

  • long

  • integer

  • double

  • float

  • date

默认值

不涉及

响应参数

状态码:200

表5 响应Body参数

参数

参数类型

描述

mapping

Map<String,KeyIndex>

索引映射信息

pipe_id

String

数据管道ID

status

String

索引状态;open 开启,closed 关闭

timestamp_field

String

时间戳字段名称

表6 KeyIndex

参数

参数类型

描述

is_chinese_exist

Boolean

是否包含中文

properties

Map<String,KeyIndex>

嵌套结构

type

String

参数解释:

字段类型

  • text 全文索引字段

  • keyword 关键字类型,适用于精确匹配

  • long 长整型

  • integer 整型

  • double 双精度浮点数

  • float 单精度浮点数

  • date 日期类型

约束限制

不涉及

取值范围:

  • text

  • keyword

  • long

  • integer

  • double

  • float

  • date

默认值

不涉及

状态码:400

表7 响应Body参数

参数

参数类型

描述

error_code

String

错误码

error_msg

String

错误描述

请求示例

{
  "mapping" : {
    "key1" : {
      "type" : "keyword"
    },
    "key2" : {
      "properties" : {
        "key3" : {
          "is_chinese_exist" : true,
          "type" : "text"
        },
        "key4" : {
          "type" : "long"
        }
      }
    }
  },
  "pipe_id" : "b22106ba-bede-453c-8488-b60c70bd6aed",
  "status" : "closed",
  "timestamp_field" : "timestamp"
}

响应示例

状态码:200

成功

{
  "mapping" : {
    "key1" : {
      "type" : "keyword"
    },
    "key2" : {
      "properties" : {
        "key3" : {
          "is_chinese_exist" : true,
          "type" : "text"
        },
        "key4" : {
          "type" : "long"
        }
      }
    }
  },
  "pipe_id" : "b22106ba-bede-453c-8488-b60c70bd6aed",
  "status" : "closed",
  "timestamp_field" : "timestamp"
}

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
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.secmaster.v1.region.SecMasterRegion;
import com.huaweicloud.sdk.secmaster.v1.*;
import com.huaweicloud.sdk.secmaster.v1.model.*;

import java.util.Map;
import java.util.HashMap;

public class UpdatePipeIndexSolution {

    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);

        SecMasterClient client = SecMasterClient.newBuilder()
                .withCredential(auth)
                .withRegion(SecMasterRegion.valueOf("<YOUR REGION>"))
                .build();
        UpdatePipeIndexRequest request = new UpdatePipeIndexRequest();
        request.withWorkspaceId("{workspace_id}");
        request.withPipeId("{pipe_id}");
        UpdateIndexRequestBody body = new UpdateIndexRequestBody();
        KeyIndex propertiesProperties = new KeyIndex();
        propertiesProperties.withType(KeyIndex.TypeEnum.fromValue("long"));
        KeyIndex propertiesProperties1 = new KeyIndex();
        propertiesProperties1.withIsChineseExist(true)
            .withType(KeyIndex.TypeEnum.fromValue("text"));
        Map<String, KeyIndex> listMappingProperties = new HashMap<>();
        listMappingProperties.put("key3", propertiesProperties1);
        listMappingProperties.put("key4", propertiesProperties);
        KeyIndex mappingMapping = new KeyIndex();
        mappingMapping.withProperties(listMappingProperties);
        KeyIndex mappingMapping1 = new KeyIndex();
        mappingMapping1.withType(KeyIndex.TypeEnum.fromValue("keyword"));
        Map<String, KeyIndex> listbodyMapping = new HashMap<>();
        listbodyMapping.put("key1", mappingMapping1);
        listbodyMapping.put("key2", mappingMapping);
        body.withTimestampField("timestamp");
        body.withStatus(UpdateIndexRequestBody.StatusEnum.fromValue("closed"));
        body.withPipeId("b22106ba-bede-453c-8488-b60c70bd6aed");
        body.withMapping(listbodyMapping);
        request.withBody(body);
        try {
            UpdatePipeIndexResponse response = client.updatePipeIndex(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
# coding: utf-8

import os
from huaweicloudsdkcore.auth.credentials import BasicCredentials
from huaweicloudsdksecmaster.v1.region.secmaster_region import SecMasterRegion
from huaweicloudsdkcore.exceptions import exceptions
from huaweicloudsdksecmaster.v1 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 = SecMasterClient.new_builder() \
        .with_credentials(credentials) \
        .with_region(SecMasterRegion.value_of("<YOUR REGION>")) \
        .build()

    try:
        request = UpdatePipeIndexRequest()
        request.workspace_id = "{workspace_id}"
        request.pipe_id = "{pipe_id}"
        propertiesProperties = KeyIndex(
            type="long"
        )
        propertiesProperties1 = KeyIndex(
            is_chinese_exist=True,
            type="text"
        )
        listPropertiesMapping = {
            "key3": propertiesProperties1,
            "key4": propertiesProperties
        }
        mappingMapping = KeyIndex(
            properties=listPropertiesMapping
        )
        mappingMapping1 = KeyIndex(
            type="keyword"
        )
        listMappingbody = {
            "key1": mappingMapping1,
            "key2": mappingMapping
        }
        request.body = UpdateIndexRequestBody(
            timestamp_field="timestamp",
            status="closed",
            pipe_id="b22106ba-bede-453c-8488-b60c70bd6aed",
            mapping=listMappingbody
        )
        response = client.update_pipe_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
package main

import (
	"fmt"
	"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
    secmaster "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/secmaster/v1"
	"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/secmaster/v1/model"
    region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/secmaster/v1/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 := secmaster.NewSecMasterClient(
        secmaster.SecMasterClientBuilder().
            WithRegion(region.ValueOf("<YOUR REGION>")).
            WithCredential(auth).
            Build())

    request := &model.UpdatePipeIndexRequest{}
	request.WorkspaceId = "{workspace_id}"
	request.PipeId = "{pipe_id}"
	typeProperties:= model.GetKeyIndexTypeEnum().LONG
	propertiesProperties := model.KeyIndex{
		Type: &typeProperties,
	}
	isChineseExistProperties:= true
	typeProperties1:= model.GetKeyIndexTypeEnum().TEXT
	propertiesProperties1 := model.KeyIndex{
		IsChineseExist: &isChineseExistProperties,
		Type: &typeProperties1,
	}
	var listPropertiesMapping = map[string](model.KeyIndex){
        "key3": propertiesProperties1,
        "key4": propertiesProperties,
    }
	mappingMapping := model.KeyIndex{
		Properties: listPropertiesMapping,
	}
	typeMapping:= model.GetKeyIndexTypeEnum().KEYWORD
	mappingMapping1 := model.KeyIndex{
		Type: &typeMapping,
	}
	var listMappingbody = map[string](model.KeyIndex){
        "key1": mappingMapping1,
        "key2": mappingMapping,
    }
	request.Body = &model.UpdateIndexRequestBody{
		TimestampField: "timestamp",
		Status: model.GetUpdateIndexRequestBodyStatusEnum().CLOSED,
		PipeId: "b22106ba-bede-453c-8488-b60c70bd6aed",
		Mapping: listMappingbody,
	}
	response, err := client.UpdatePipeIndex(request)
	if err == nil {
        fmt.Printf("%+v\n", response)
    } else {
        fmt.Println(err)
    }
}

更多编程语言的SDK代码示例,请参见API Explorer的代码示例页签,可生成自动对应的SDK代码示例。

状态码

状态码

描述

200

成功

400

错误响应

错误码

请参见错误码

相关文档