最近、ElasticStackインスタンスを5.5から6.0にアップグレードしましたが、このバージョンの重大な変更の一部がパイプラインに悪影響を及ぼしているようです。 ElasticSearch内のインデックスに応じて、類似したインデックスのいくつかのグループに対してインデックスパターンを自動的に作成するスクリプトがありました。問題は、6.0バージョンの新しいマッピングの変更により、コンソールから新しいインデックスパターンを追加できないことです。これは私が使用したリクエストであり、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
}
この複数のマッピングの問題を回避するには、コンソールからインデックスパターンを追加するにはどうすればよいですか?
URLはバージョン6.0.0で変更されました。新しいURLは次のとおりです。
http:// localhost:9200/.kibana/doc/doc:index-pattern:my-index-pattern-name
このCURLはあなたのために働くはずです:
curl -XPOST "http://localhost:9200/.kibana/doc/index-pattern:my-index-pattern-name" -H 'Content-Type: application/json' -d'
{
"type" : "index-pattern",
"index-pattern" : {
"title": "my-index-pattern-name*",
"timeFieldName": "execution_time"
}
}'
タイムスタンプを使用してインデックスパターンを一括で作成します。
cat index_svc.txt
my-index1
my-index2
my-index3
my-index4
my-index5
my-index6
cat index_svc.txt | while read index; do
echo -ne "create index-pattern ${index} \t"
curl -XPOST "http://10.0.1.44:9200/.kibana/doc/index-pattern:${index}" -H 'Content-Type: application/json' -d "{\"type\":\"index-pattern\",\"index-pattern\":{\"title\":\"${index}2020*\",\"timeFieldName\":\"@timestamp\"}}"
echo
done
Kibanaの場合7.0.1/7+次にsaved_objectsAPIを参照できます例:参照: https://www.elastic.co/guide/en/kibana/master/saved -objects-api.html (Get、Create、Deleteなどを探します)。
この場合、使用します: https://www.elastic.co/guide/en/kibana/master/saved-objects-api-create.html
$ curl -X POST -u $user:$pass -H "Content-Type: application/json" -H "kbn-xsrf:true" "${KIBANA_URL}/api/saved_objects/index-pattern/dummy_index_pattern" -d '{ "attributes": { "title":"index_name*", "timeFieldName":"sprint_start_date"}}' -w "\n" | jq
そして
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 327 100 250 100 77 543 167 --:--:-- --:--:-- --:--:-- 543
{
"type": "index-pattern",
"id": "dummy_index_pattern",
"attributes": {
"title": "index_name*",
"timeFieldName": "sprint_start_date"
},
"references": [],
"migrationVersion": {
"index-pattern": "6.5.0"
},
"updated_at": "2020-02-25T22:56:44.531Z",
"version": "Wzg5NCwxNV0="
}
$KIBANA_URL
が設定された場所:http://my-elk-stack.devops.local:5601
jq
がインストールされていない場合は、コマンドから| jq
を削除します(上記のとおり)。
[〜#〜] ps [〜#〜]:KIBANAのGUIを使用してindex-pattern
を作成すると、KibanaはそのieインデックスID
をalpha-numericとして保存します。 =値(ex:laskl32ukdflsdjflskadf-sdf-sdfsaldkjfhsdf-dsfasdf)これを行うときに使用/検索/入力するのは難しい次のcurlコマンドを使用して、既存のインデックスパターンに関する情報を検索するGET
操作。
(上記のように)インデックスパターン名を渡した場合、Kibana/Elasticsearchでは、インデックスパターンのID
を、REST呼び出し(例: .../api/saved_objects/index-pattern/dummy_index_pattern ")
ここで:dummy_index_patternはID
になり(Kibana GUIでインデックスパターン名にマウスを合わせた場合にのみ表示されます)、
index name as:index_name*
(つまり、Kibana Home > Gear icon > Index Patterns
をクリックすると、GUIに表示され、右側に表示されるインデックスパターンが表示されます。
[〜#〜] note [〜#〜]:timeFieldNameは非常に重要です。これは、時系列イベント(つまり、特にTSVB時系列ビジュアルビルダー視覚化タイプ)を検索するために使用されるフィールドです。デフォルトでは@timestamp
フィールドを使用しますが、インデックスを再作成すると(データソース(例:JIRA)からターゲットElasticsearchインデックスにデルタ情報を送信する代わりに)、すべてのデータを最初から1回のショットで送信しますデータソースからの場合、@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
値です。
curl -X GET "${KIBANA_URL}/api/saved_objects/index-pattern/dummy_index_pattern" | jq
または
それ以外の場合(ページIndex Pattern > Create Index Pattern
の下のKibanaのGUI/Webページを介して作成されたインデックスパターンに対してGET
を実行する場合は、次のように入力する必要があります。
curl -X GET "${KIBANA_URL}/api/saved_objects/index-pattern/jqlaskl32ukdflsdjflskadf-sdf-sdfsaldkjfhsdf-dsfasdf" | jq
Elasticsearch 6.0.0以降で作成されたインデックスには、単一のマッピングタイプのみを含めることができます。
複数のマッピングタイプを使用して5.xで作成されたインデックスは、Elasticsearch6.xでも以前と同じように機能します。
Elasticsearch 7.0.0では、マッピングタイプは完全に削除されます。
ES6.0.0で複数のdoc_typesを使用してインデックスを作成している可能性があります。 https://www.elastic.co/guide/en/elasticsearch/reference/current/removal-of-types.html