2017-10-20 12 views
1

質問の最後には、単純なElasticsearchマッピングを示す端末コマンドがあります。私はElasticsearch-PHPを使ってこの種のマッピングを設定する必要があります。そして、私はデータを索引付けしているときにこれを行う必要があります。Elasticsearch-PHPでこの単純なElasticsearchマッピングを設定する方法は?

私はElasticsearch-PHPでインデックスを作成する方法を知っています。それは私の質問は、私はelasticsearch-PHP形式での下に与えられた特定のマッピングに対応するマッピング、を設定する方法(私はそれが連想配列になると信じていることである

for($i = 0; $i < 100; $i++) { 
    $params['body'][] = [ 
     'index' => [ 
      '_index' => 'my_index', 
      '_type' => 'my_type', 
     ] 
    ]; 

    $params['body'][] = [ 
     'my_field' => 'my_value', 
     'second_field' => 'some more values' 
    ]; 
} 

$responses = $client->bulk($params); 

ようなものにしますが、詳細はわかりません)


これは私がPHPで使用されるフォーマットに変換すること、例えば、ESマッピングです:あなたはあなたのマッピングを更新しないと

PUT _template/packets 
{ 
    "template": "packets-*", 
    "mappings": { 
    "pcap_file": { 
     "dynamic": "false", 
     "properties": { 
     "timestamp": { 
      "type": "date" 
     }, 
     "layers": { 
      "properties": { 
      "ip": { 
       "properties": { 
       "ip_ip_src": { 
        "type": "ip" 
       }, 
       "ip_ip_dst": { 
        "type": "ip" 
       } 
       } 
      } 
      } 
     } 
     } 
    } 
    } 
} 

答えて

0

- あなたはputマッピングする必要はありませんデータをelasticsearchに再インデックスする度にしかし、あなたがしなければ、あなたのあなたがこれを行うことができます新しい名前でインデックスを作成します。

$put = [ 
    'mappings' => [ 
     // your mapping here 
    ], 
]; 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, 'http://yourHost:9200/yourIndex'); 
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT'); 
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($put)); 
curl_exec($ch); 

たり、パッケージelasticsearch使用することができます。

$params = [ 
    'index' => 'yourIndex', 
    'body' => [ 
     'mappings' => [ 
      // your mapping here 
     ] 
    ] 
]; 
$response = $client->indices()->create($params); 
+0

ねえ、あなたに感謝を。また、ここに示すマッピングに対応するマッピング(PHPで)をどのように書くのか教えてください:https://pastebin.com/H7QEWhNN – JBel

+0

つまり、 '' mappings ''に割り当てた配列をどのように埋め込むのでしょうか?上記のあなたのコードですか? – JBel

関連する問題