如何读取 ElasticSearch 中的最新索引
How to read latest index in ElasticSearch
在我的 ElasticSearch 中,为 metricbeat 创建了一个带有日期后缀的新索引。即 'metricbeat-7.1-2019.12.20'。现在我正在尝试从最新创建的索引中读取系统参数,但我不确定该怎么做。
var nodes = new Uri[]
{
new Uri(_options.Value.ElasticSearchUrl),
};
connectionPool = new StaticConnectionPool(nodes);
string indexName = "metricbeat*";
connectionSettings = new ConnectionSettings(connectionPool).DefaultIndex(indexName);
elasticClient = new ElasticClient(connectionSettings);
string[] systemFields = new string[]
{
"system.memory.*"
};
var elasticResponse = elasticClient.Search<object>(s => s
.DocValueFields(dvf => dvf.Fields(systemFields)));
elasticResponse 给了我数据,但它在时间戳中显示了较旧的日期。
请推荐。
string[] systemFields = new string[]
{
"system.memory.actual.used.pct",
"system.cpu.total.norm.pct",
"system.load.5",
"docker.diskio.summary.bytes"
};
var elasticResponse = elasticClient.Search<object>(s => s
.DocValueFields(dvf => dvf.Fields(systemFields))
.Aggregations(ag => ag.Max("last_process_time", sa => sa
.Field("@timestamp")))
);
Cat indices API 将使用创建日期作为排序参数来帮助您找到您正在寻找的索引。
await client.Indices.CreateAsync("metricbeat-7.1-2019.12.20", create => create);
await client.Indices.CreateAsync("metricbeat-7.1-2019.12.21", create => create);
var response = await client.Cat.IndicesAsync(i => i.Index("metricbeat-7.1-*")
.Headers("index", "creation.date")
.SortByColumns("creation.date"));
Console.WriteLine(response.Records.LastOrDefault()?.Index);
输出:
metricbeat-7.1-2019.12.21
希望您为索引定义了 ILM policy,我的解决方案不会检索
来自 elasticsearch 的数千个索引信息。
希望对您有所帮助。
在我的 ElasticSearch 中,为 metricbeat 创建了一个带有日期后缀的新索引。即 'metricbeat-7.1-2019.12.20'。现在我正在尝试从最新创建的索引中读取系统参数,但我不确定该怎么做。
var nodes = new Uri[]
{
new Uri(_options.Value.ElasticSearchUrl),
};
connectionPool = new StaticConnectionPool(nodes);
string indexName = "metricbeat*";
connectionSettings = new ConnectionSettings(connectionPool).DefaultIndex(indexName);
elasticClient = new ElasticClient(connectionSettings);
string[] systemFields = new string[]
{
"system.memory.*"
};
var elasticResponse = elasticClient.Search<object>(s => s
.DocValueFields(dvf => dvf.Fields(systemFields)));
elasticResponse 给了我数据,但它在时间戳中显示了较旧的日期。
请推荐。
string[] systemFields = new string[]
{
"system.memory.actual.used.pct",
"system.cpu.total.norm.pct",
"system.load.5",
"docker.diskio.summary.bytes"
};
var elasticResponse = elasticClient.Search<object>(s => s
.DocValueFields(dvf => dvf.Fields(systemFields))
.Aggregations(ag => ag.Max("last_process_time", sa => sa
.Field("@timestamp")))
);
Cat indices API 将使用创建日期作为排序参数来帮助您找到您正在寻找的索引。
await client.Indices.CreateAsync("metricbeat-7.1-2019.12.20", create => create);
await client.Indices.CreateAsync("metricbeat-7.1-2019.12.21", create => create);
var response = await client.Cat.IndicesAsync(i => i.Index("metricbeat-7.1-*")
.Headers("index", "creation.date")
.SortByColumns("creation.date"));
Console.WriteLine(response.Records.LastOrDefault()?.Index);
输出:
metricbeat-7.1-2019.12.21
希望您为索引定义了 ILM policy,我的解决方案不会检索 来自 elasticsearch 的数千个索引信息。
希望对您有所帮助。