私はElastic Searchを使用していますが、私はAuth目的のReadOnlyRestプラグインというプラグインを見つけました。このプラグインを設定するには、ユーザーをElastic search ymlに追加する必要があります。SnakeYAMLを使用してブロックシーケンス内にブロックマッピングをネストしたymlファイルにユーザーを追加するJava
そこで、Javaを使用して"key : value"
ペアデータをymlに追加する方法を検索しました。データを追加するためにSnakeYAMLを訪れました。
私はJavaからユーザーのデータを送信できます。
Javaコード。上記のコードから
package com.test.elasticsearch;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.log4j.Logger;
import org.yaml.snakeyaml.DumperOptions;
import org.yaml.snakeyaml.Yaml;
public class YAMLSample {
protected static Logger logger = Logger.getLogger(YAMLSample.class);
final String fileName = "/home/Installation/elasticsearch-2.3.1/config/elasticsearch.yml";
public void writeToYML() throws IOException {
logger.debug("Write to YML");
Map<String, Object> data = new HashMap<String, Object>();
data.put("name", "user5");
data.put("type", "allow");
data.put("auth_key", "user5:user5");
data.put("kibana_access", "ro");
data.put("indices", new String[] { ".kibana*", "abc", "def" });
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
list.add(data);
DumperOptions options = new DumperOptions();
options.setIndent(5);
Yaml yaml = new Yaml(options);
FileWriter writer = new FileWriter(fileName, true);
yaml.dump(list, writer);
logger.debug("DONE!");
}
public static void main(String[] args) throws IOException {
// new YAMLSample().readYML();
new YAMLSample().writeToYML();
}
}
出力は次のとおりです。
- name: user5
indices: [.kibana*, abc, def]
kibana_access: ro
type: allow
auth_key: user5:user5
しかし、予想される出力は次のとおりです。
- name: user5
indices: [.kibana*, abc, def]
kibana_access: ro
type: allow
auth_key: user5:user5
"ハイフンマイナスは" ただ一つのスペースを持っている必要がありますし、 「ハイフンマイナス」の前に4つのスペースが必要です。
私はこれがユーザーの配列として表示されることを期待しています。 「ハイフンマイナス」以外にはスペースはほとんどありません。
解決策を見つけるのを手伝ってください。
こんにちはマルセル・ディアス、 を更新し、この2つのオプションが追加ありがとう:下記のようなコードを見てどのようです返信のためにうまくいきました。問題は私がsnake-yaml 1.16の依存関係を使用していたことです。バージョン1.17ではDumperOptionsクラスにこの新しいメソッドがあります。 –