2013-03-22 4 views
0

В приведенных ниже частях мне нужно выбрать первую запись для каждого раздела, которая, в свою очередь, является именем индекса для ElasticSearch.Анализ текста индекса индексов elasticsearch и значений индекса захвата

Для экземпляра nprod @ n_docs платформенные апи стадии, nprod @ janeuk_classic, nprod @ delista.com @ 1

Так что я знаю, что они находятся между моделями персонажей, как

{ "

и

: { "настройки": {

Итак, как бы выглядел мой сценарий, чтобы захватить эти значения, чтобы я мог вытащить их из другого файла?

Мой выход выглядит следующим образом:

{ 
    "[email protected]_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" 
    } 
    }, 
    "[email protected]_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" 
    } 
    }, 
    "[email protected]@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" 
    } 
    }, 
+2

ПРОЧИЕ НЕ БЫТЬ – LittleBobbyTables

ответ

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); 
Смежные вопросы