我最近把我的ElasticStack示例从5.5升级到了6.0,这个版本的一些突破性的变化似乎已经损害了我的管道。我有一个脚本,它根据ElasticSearch中的索引,自动为一些类似的索引组创建索引模式。问题是,随着6.0版本的新Map变化,我无法从控制台添加任何新的索引模式。这是我在Python 5.5中使用的请求,并且运行良好:
curl -XPOST "http://localhost:9200/.kibana/index-pattern" -H 'Content- Type: application/json' -d'
{
"title" : "index_name",
"timeFieldName" : "execution_time"
}'
下面是我在6.0中从ElasticSearch得到的响应:
{
"error": {
"root_cause": [
{
"type": "illegal_argument_exception",
"reason": "Rejecting mapping update to [.kibana] as the final mapping would have more than 1 type: [index-pattern, doc]"
}
],
"type": "illegal_argument_exception",
"reason": "Rejecting mapping update to [.kibana] as the final mapping would have more than 1 type: [index-pattern, doc]"
},
"status": 400
}
如何从控制台添加索引模式以避免这种多Map问题?
5条答案
按热度按时间ivqmmu1c1#
在版本6.0.0中,URL已更改,以下是新的URL:
这个CURL应该对你有用:
8ljdwjyq2#
如果您是Kibana7.0.1 / 7+,则可以引用saved_objects API,例如:请参阅:https://www.elastic.co/guide/en/kibana/master/saved-objects-api.html(查找“获取”、“创建”、“删除”等)。
在本例中,我们将用途:https://www.elastic.co/guide/en/kibana/master/saved-objects-api-create.html
和
其中,
$KIBANA_URL
设置为:http://my-elk-stack.devops.local:5601
个如果您没有安装
jq
,请从命令中删除| jq
(如上所列)。PS:当使用KIBANA的GUI创建
index-pattern
时,Kibana将其索引ID
存储为字母数字值(**例如:**laskl 32 ukdflsdjflskadf-sdf-sdfsaldkjfhsdf-dsfasdf),当使用以下curl命令执行GET
操作以查找有关现有索引模式的信息时,很难使用/find/type。如果您传递了索引模式名称(就像我们上面所做的那样),那么在Kibana/Elasticsearch中,它将按照您为REST调用指定的名称来讲述索引模式的
ID
(例如:.../api/saved_objects/index-pattern/dummy_index_pattern”)此处:dummy_index_pattern将变为
ID
(仅当您将鼠标悬停在Kibana GUI中的索引模式名称上时可见),并且它索引名称将为:
index_name*
(即,当您单击Kibana Home > Gear icon > Index Patterns
并看到右侧列出的索引模式时,GUI中列出的内容)。注意:timeFieldName**非常重要***。这是用于查找时间序列事件的字段(即,尤其是TSVB时间序列可视化构建器可视化类型)。默认情况下,它使用
@timestamp
字段,但如果您重新创建索引(而不是将增量信息从数据源发送到目标ElasticSearch索引(例如:JIRA)),并从数据源从头开始一次性发送所有数据,则@timestamp
将无法使用可视化的时间跨度/窗口功能( 将时间从过去1周更改为过去1小时或过去6个月 *);在这种情况下,您可以设置一个不同的字段,即sprint_start_date
,就像我使用的那样(现在在Kibana Discover数据页中,如果您选择此索引模式,它将使用sprint_start_date
(类型:日期)字段。要GET新创建的索引模式的索引模式信息,可以参考:https://www.elastic.co/guide/en/kibana/master/saved-objects-api-get.html--或者运行以下代码,其中(URL路径中的最后一个值是我们之前创建的索引模式的
ID
值:或
否则(如果您要对通过Kibana的GUI/网页在Page
Index Pattern > Create Index Pattern
下创建的索引模式执行GET
,则必须输入以下内容:lndjwyie3#
对于带有Open Distro安全插件的Kibana 7.7.0(准确地说是
amazon/opendistro-for-elasticsearch-kibana:1.8.0
Docker图像),这对我很有效:请注意,
kbn-xsrf
标头是必需的,但从安全的Angular 来看,它似乎是无用的。输出如下:
我不知道为什么
migrationVersion.index-pattern
是“7.6.0”。对于其他Kibana版本,您应该能够:
1.在浏览器中打开Kibana用户界面
1.打开开发人员控制台,导航到网络选项卡
1.使用UI创建索引模式
1.在开发人员控制台中打开POST请求,查看URL和标头,然后将其重写为cURL
iq3niunx4#
在Elasticsearch 6.0.0或更高版本中创建的索引只能包含一个Map类型。
在5.x中创建的具有多个Map类型的索引将继续在Elasticsearch 6.x中像以前一样工作。
Map类型将在Elasticsearch 7.0.0中被完全删除。
也许您正在ES 6.0.0中创建一个具有多个doc_types的索引。https://www.elastic.co/guide/en/elasticsearch/reference/current/removal-of-types.html
mnemlml85#
使用时间戳批量创建索引模式: