索引是一种倒排的数据存储结构,由关键词和指向实际数据的逻辑指针组成,用于快速根据关键词定位到具体数据行,类似于数据的目录。您只有配置索引后,才能进行查询和分析操作。本文通过代码示例介绍如何创建、修改、查询、删除索引。
前提条件
- 已开通日志服务。更多信息,请参见开通日志服务。
- 已创建并获取AccessKey。更多信息,请参见访问密钥。
阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维。RAM用户需具备操作日志服务资源的权限。具体操作,请参见为RAM用户授权。
- 已安装Java开发环境。
日志服务Java SDK支持JRE 6.0及以上的Java运行环境,您可以执行java -version命令检查您已安装的Java版本。如果未安装,可以从Java官方网站下载安装包并完成安装。
- 已安装日志服务Java SDK。具体操作,请参见安装Java SDK。
- 已创建Project。具体操作,请参见创建Project示例代码。
- 已写入日志到Logstore。具体操作,请参见创建Logstore示例代码。
注意事项
本示例以华东1(杭州)的公网Endpoint为例,其公网Endpoint为https://cn-hangzhou.log.aliyuncs.com
。如果您希望通过与Project同地域的其他阿里云产品访问日志服务,请使用格式为https://cn-hangzhou-intranet.log.aliyuncs.com
的私网Endpoint。关于日志服务支持的地域与Endpoint的对应关系,请参见服务入口。
原始日志样例
body_bytes_sent:1750
host:www.example.com
http_referer:www.example.com
http_user_agent:Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; it-it) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27
http_x_forwarded_for:203.0.103.10
remote_addr:203.0.103.10
remote_user:p288
request_length:13741
request_method:GET
request_time:71
request_uri:/request/path-1/file-1
http_code:200
time_local:11/Aug/2021:06:52:27
upstream_response_time:0.66
创建索引示例代码
控制台界面支持界面化配置索引,操作更便捷。具体操作,请参见创建索引。
以下代码用于创建名为testindex的索引。该示例中,基于原始日志样例,开启全文索引,为request_method、status字段开启字段索引。

import com.aliyun.openservices.log.Client;
import com.aliyun.openservices.log.common.Index;
import com.aliyun.openservices.log.exception.LogException;
public class CreateIndex {
public static void main(String[] args) throws LogException {
//阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维。
String accessId = "yourAccessKeyId";
String accessKey = "yourAccessKeySecret";
//Project名称。
String projectName = "ali-test-project";
//Logstore名称。
String logstoreName = "ali-test-logstore";
//日志服务的服务入口。此处以杭州为例,其它地域请根据实际情况填写。
String host = "https://cn-hangzhou.log.aliyuncs.com";
//创建日志服务Client。
Client client = new Client(host, accessId, accessKey);
try {
//索引。
//创建索引前,必须规划好全文索引、字段索引配置。该示例中,开启全文索引,为request_method、status字段开启字段索引。
String logstoreindex = "{\"line\": {\"token\": [\",\", \" \", \"'\", \"\\\"\", \";\", \"=\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", \"?\", \"@\", \"&\", \"<\", \">\", \"/\", \":\", \"\\n\", \"\\t\", \"\\r\"], \"caseSensitive\": false, \"chn\": false}, \"keys\": {\"request_method\": {\"type\": \"text\", \"token\": [\",\", \" \", \"'\", \"\\\"\", \";\", \"=\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", \"?\", \"@\", \"&\", \"<\", \">\", \"/\", \":\", \"\\n\", \"\\t\", \"\\r\"], \"caseSensitive\": false, \"alias\": \"\", \"doc_value\": true, \"chn\": false}, \"status\": {\"type\": \"long\", \"alias\": \"\", \"doc_value\": true}}, \"log_reduce\": false, \"max_text_len\": 2048}";
Index index = new Index();
System.out.println("ready to create index");
index.FromJsonString(logstoreindex);
client.CreateIndex(projectName, logstoreName, index);
System.out.println(String.format("create index for %s success", logstoreName));
} catch (LogException e) {
System.out.println("LogException e :" + e.toString());
System.out.println("error code :" + e.GetErrorCode());
System.out.println("error message :" + e.GetErrorMessage());
throw e;
}
}
}
预期结果如下:
ready to create index
create index for ali-test-logstore success
更新索引示例代码
控制台界面支持界面化配置索引,操作更便捷。具体操作,请参见创建索引。
以下代码用于更新索引。该示例中,基于原始日志样例,开启全文索引,为request_method、status开启字段索引,并设置request_method字段大小写敏感为True。

import com.aliyun.openservices.log.Client;
import com.aliyun.openservices.log.common.Index;
import com.aliyun.openservices.log.exception.LogException;
public class UpdateIndex {
public static void main(String[] args) throws LogException {
//阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维。
String accessId = "yourAccessKeyId";
String accessKey = "yourAccessKeySecret";
//Project名称。
String projectName = "ali-test-project";
//Logstore名称。
String logstoreName = "ali-test-logstore";
//日志服务的服务入口。此处以杭州为例,其它地域请根据实际情况填写。
String host = "https://cn-hangzhou.log.aliyuncs.com";
//创建日志服务Client。
Client client = new Client(host, accessId, accessKey);
try {
//索引。
//创建索引前,必须规划好全文索引、字段索引。该示例中,开启全文索引,为request_method、status开启字段索引,并设置request_method字段大小写敏感为True。
String logstoreindex = "{\"line\": {\"token\": [\",\", \" \", \"'\", \"\\\"\", \";\", \"=\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", \"?\", \"@\", \"&\", \"<\", \">\", \"/\", \":\", \"\\n\", \"\\t\", \"\\r\"], \"caseSensitive\": false, \"chn\": false}, \"keys\": {\"request_method\": {\"type\": \"text\", \"token\": [\",\", \" \", \"'\", \"\\\"\", \";\", \"=\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", \"?\", \"@\", \"&\", \"<\", \">\", \"/\", \":\", \"\\n\", \"\\t\", \"\\r\"], \"caseSensitive\": true, \"alias\": \"\", \"doc_value\": true, \"chn\": false}, \"status\": {\"type\": \"long\", \"alias\": \"\", \"doc_value\": true}}, \"log_reduce\": false, \"max_text_len\": 2048}";
Index index = new Index();
System.out.println("ready to update index");
index.FromJsonString(logstoreindex);
client.UpdateIndex(projectName, logstoreName, index);
System.out.println(String.format("update index for %s success", logstoreName));
} catch (LogException e) {
System.out.println("LogException e :" + e.toString());
System.out.println("error code :" + e.GetErrorCode());
System.out.println("error message :" + e.GetErrorMessage());
throw e;
}
}
}
预期结果如下:
ready to update index
update index for ali-test-logstore success
查询索引示例代码
以下代码用于查询指定Logstore的索引信息。
import com.aliyun.openservices.log.Client;
import com.aliyun.openservices.log.common.Index;
import com.aliyun.openservices.log.exception.LogException;
import com.aliyun.openservices.log.response.GetIndexResponse;
public class ListIndex {
public static void main(String[] args) throws LogException {
//阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维。
String accessId = "yourAccessKeyId";
String accessKey = "yourAccessKeySecret";
//Project名称。
String projectName = "ali-test-project";
//Logstore名称。
String logstoreName = "ali-test-logstore";
//日志服务的服务入口。此处以杭州为例,其它地域请根据实际情况填写。
String host = "https://cn-hangzhou.log.aliyuncs.com";
//创建日志服务Client。
Client client = new Client(host, accessId, accessKey);
try {
Index index = new Index();
System.out.println("ready to get index");
GetIndexResponse response = client.GetIndex(projectName, logstoreName);
index = response.GetIndex();
//输出索引。
System.out.println("The index is :" + index.ToJsonString());
System.out.println(String.format("get index for %s success", logstoreName));
} catch (LogException e) {
System.out.println("LogException e :" + e.toString());
System.out.println("error code :" + e.GetErrorCode());
System.out.println("error message :" + e.GetErrorMessage());
throw e;
}
}
}
预期结果如下:
ready to get index
The index is :{"log_reduce":false,"line":{"caseSensitive":false,"chn":false,"token":[","," ","'","\"",";","=","(",")","[","]","{","}","?","@","&","<",">","/",":","\n","\t","\r"]},"keys":{"request_method":{"doc_value":true,"caseSensitive":true,"chn":false,"alias":"","type":"text","token":[","," ","'","\"",";","=","(",")","[","]","{","}","?","@","&","<",">","/",":","\n","\t","\r"]},"status":{"doc_value":true,"alias":"","type":"long"}},"ttl":30,"max_text_len":2048}
get index for ali-test-logstore success
删除索引示例代码
以下代码用于删除指定Logstore的索引信息。
import com.aliyun.openservices.log.Client;
import com.aliyun.openservices.log.exception.LogException;
public class DeleteIndex {
public static void main(String[] args) throws LogException {
//阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维。
String accessId = "yourAccessKeyId";
String accessKey = "yourAccessKeySecret";
//Project名称。
String projectName = "ali-test-project";
//Logstore名称。
String logstoreName = "ali-test-logstore";
//日志服务的服务入口。此处以杭州为例,其它地域请根据实际情况填写。
String host = "https://cn-hangzhou.log.aliyuncs.com";
//创建日志服务Client。
Client client = new Client(host, accessId, accessKey);
try {
System.out.println("ready to delete index");
client.DeleteIndex(projectName, logstoreName);
System.out.println(String.format("delete index for %s success", logstoreName));
} catch (LogException e) {
System.out.println("LogException e :" + e.toString());
System.out.println("error code :" + e.GetErrorCode());
System.out.println("error message :" + e.GetErrorMessage());
throw e;
}
}
}
预期结果如下:
ready to delete index
delete index for ali-test-logstore success
相关文档
- 阿里云OpenAPI开发者门户提供调试、SDK、示例和配套文档。通过OpenAPI,您无需手动封装请求和签名操作,就可以快速对日志服务API进行调试。更多信息,请参见OpenAPI开发者门户。
- 为满足越来越多的自动化日志服务配置需求,日志服务提供命令行工具CLI(Command Line Interface)。更多信息,请参见日志服务命令行工具CLI。
- 关于Index API接口说明,请参见如下:
- 更多示例代码,请参见Aliyun Log Java SDK on GitHub。