2017-10-20 30 views
1

Étant donné à la fin de la question est une commande de terminal montrant un mappage Elasticsearch simple. J'ai besoin de mettre en place ce type de mapping pour un index en utilisant Elasticsearch-PHP. Et je dois le faire au moment où j'indexe les données.comment configurer ce simple Elasticsearch Mapping dans Elasticsearch-PHP?

Je sais indexer dans Elasticsearch-PHP. Ce sera quelque chose comme

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); 

Ma question est que comment vais-je mettre en place une cartographie, correspondant à la cartographie particulière donnée ci-dessous dans le format ElasticSearch-PHP (je crois qu'il deviendra un tableau associatif, mais Je ne suis pas sûr de plus de détails)?


C'est l'exemple ES Mapping, que je veux convertir au format utilisé en PHP:

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" 
       } 
       } 
      } 
      } 
     } 
     } 
    } 
    } 
} 

Répondre

0

Si vous ne mettez pas à jour votre carte - vous n'avez pas à put cartographie chaque fois que vous réindexez les données dans elasticsearch. Mais si vous le faites, vous créer un index avec le nouveau nom que vous pouvez faire ceci:

$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); 

ou vous pouvez utiliser package ElasticSearch:

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

Hey merci; pouvez-vous également me dire comment j'écrirai un mapping (en PHP) correspondant au mappage affiché ici: https://pastebin.com/H7QEWhNN – JBel

+0

En d'autres termes, comment vais-je remplir le tableau que vous avez affecté à '' mappings '' dans votre code ci-dessus? – JBel