Jump to content

blackhawk2165

New Members
  • Posts

    2
  • Joined

  • Last visited

Posts posted by blackhawk2165

  1. Hello,

     

    Thanks for your help. I believe the 1 was a typo. I am working with Elasticsearch which is an open source, local search engine. I want to index the documents into an array and then I can index them. I planned on using recursiveiteratoriterator to get all the documents and put them into an array. 

     

    also are you suggesting that I change:

     

    if ($i % 1000) {

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

     

    to 

     

    if(($i+1) % 1000 == false) {

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

  2. Hello,

     

    Here is my code:

    <?php
    
    require 'vendor/autoload.php';
    
    $client = new Elasticsearch/Client();
    
    $root = realpath('~/elkdata/for_elk_test_2014_11_24/Agencies');
    
    $iter = new RecursiveIteratorIterator(
    		new RecursiveDirectoryIterator($root, RecursiveDirectoryIterator::SKIP_DOTS),
    		RecursiveIteratorIterator::SELF_FIRST,
    		RecursiveIteratorIterator::CATCH_GET_CHILD);
    		
    $paths = array($root);
    foreach ($iter as $path => $dir) {
    	if ($dir -> isDir()) {
    		$paths[] = $path;
    		}
    	}
    
    //Create the index and mappings
    $mapping['index'] = 'rvuehistoricaldocuments2009-2013'; //mapping code
    $mapping['body'] = array (
    	'mappings' => array (
    		'documents' => array (
    			'_source' => array (
    				'enabled' => true
    			),
    			'properties' => array(
    				'doc_name' => array(
    					'type' => 'string',
    					'analyzer' => 'standard'
    				),
    				'description' => array(
    					'type' => 'string'
    				)
    			)
    		)
    	)
    );
    
    $client ->indices()->create($mapping)
    
    
    //Now index the documents
    
    for ($i = 0; $i <= count($paths); $i++) {
    	$params ['body'][] = array(
    		'index' => array(
    		'type' => 'documents'
    		'body' => array(
    			'foo' => 'bar' //Document body goes here
    			
    			)
    		)
    	);
    	
    	//Every 1000 documents stop and send the bulk request.
    	
    	if($1 % 1000) {
    		$responses = $client->bulk($params);
    	
    	// erase the old bulk request
    	$params = array();
    	
    	// unset the bulk response when you are done to save memory
    	unset($responses);
    	}
    }
    ?>
    
    

    I am looking to index a large amount of documents using elastic search and php. I have a very complex directory filled with other directories that i need to index into an array. I wanted to see if my code looked right, and if not what am I doing wrong? 

     

    Thanks,

    Austin Harmon

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.