0

以下の部分では、各セクションの出力の最初のエントリを選択する必要があります。これは、ElasticSearch のインデックスの名前です。

たとえば、nprod@n_docs、platform-api-stage、nprod@janeuk_classic、nprod@delista.com@1

だから私は彼らがのような文字のパターンの間にあることを知っています

{ "

そして

: { "設定" : {

では、これらの値を取得して別のファイルに出力できるようにするには、スクリプトはどのようになるでしょうか?

私の出力は次のようになります。

{
  "nprod@n_docs" : {
    "settings" : {
      "index.analysis.analyzer.rwn_text_analyzer.char_filter" : "html_strip",
      "index.analysis.analyzer.rwn_text_analyzer.language" : "English",
      "index.translog.disable_flush" : "false",
      "index.version.created" : "190199",
      "index.number_of_replicas" : "1",
      "index.number_of_shards" : "5",
      "index.analysis.analyzer.rwn_text_analyzer.type" : "snowball",
      "index.translog.flush_threshold_size" : "60",
      "index.translog.flush_threshold_period" : "",
      "index.translog.flush_threshold_ops" : "500"
    }
  },
  "platform-api-stage" : {
    "settings" : {
      "index.analysis.analyzer.api_edgeNGram.type" : "custom",
      "index.analysis.analyzer.api_edgeNGram.filter.0" : "api_nGram",
      "index.analysis.filter.api_nGram.max_gram" : "50",
      "index.analysis.analyzer.api_edgeNGram.filter.1" : "lowercase",
      "index.analysis.analyzer.api_path.type" : "custom",
      "index.analysis.analyzer.api_path.tokenizer" : "path_hierarchy",
      "index.analysis.filter.api_nGram.min_gram" : "2",
      "index.analysis.filter.api_nGram.type" : "edgeNGram",
      "index.analysis.analyzer.api_edgeNGram.tokenizer" : "standard",
      "index.analysis.filter.api_nGram.side" : "front",
      "index.analysis.analyzer.api_path.filter.0" : "lowercase",
      "index.number_of_shards" : "5",
      "index.number_of_replicas" : "1",
      "index.version.created" : "200599"
    }
  },
  "nprod@janeuk_classic" : {
    "settings" : {
      "index.analysis.analyzer.n_text_analyzer.language" : "English",
      "index.translog.disable_flush" : "false",
      "index.version.created" : "190199",
      "index.number_of_replicas" : "1",
      "index.number_of_shards" : "5",
      "index.analysis.analyzer.n_text_analyzer.char_filter" : "html_strip",
      "index.analysis.analyzer.n_text_analyzer.type" : "snowball",
      "index.translog.flush_threshold_size" : "60",
      "index.translog.flush_threshold_period" : "",
      "index.translog.flush_threshold_ops" : "500"
    }
  },
  "nprod@delista.com@1" : {
    "settings" : {
      "index.analysis.analyzer.n_text_analyzer.language" : "English",
      "index.translog.disable_flush" : "false",
      "index.version.created" : "191199",
      "index.number_of_replicas" : "1",
      "index.number_of_shards" : "5",
      "index.analysis.analyzer.n_text_analyzer.char_filter" : "html_strip",
      "index.analysis.analyzer.n_text_analyzer.type" : "snowball",
      "index.translog.flush_threshold_size" : "60",
      "index.translog.flush_threshold_period" : "",
      "index.translog.flush_threshold_ops" : "500"
    }
  },
4

1 に答える 1

3

それがJSONです。データを読み取り、JSON::XSを使用して解析します。

use JSON::XS qw( decode_json );

my $file;
{ 
   open(my $fh, '<:raw', $qfn)
      or die("Can't open \"$qfn\": $!\n");
   local $/;
   $file = <$fh>;
}

my $data = decode_json($file);

次に、ツリーをたどって必要な情報を取得します。

my @index_names = keys(%$data);
于 2013-03-22T20:49:45.813 に答える