2016-04-15 5 views
0

Was ist der schnellste Weg, _ids eines bestimmten Indexes mit fosElasticaBundle (3.1.0) zu bekommen? Mein Index hat etwa 30.000 Dokumente.Wie bekomme ich nur IDs oder ein Feld mit fos elastica

Zum Beispiel würde ich die Liste aller Ids mit fosElastica bekommen. Equivalent Elasticsearch:

curl http://localhost:9200/search/etablissement/_search?pretty=true -d { ' 
     "query" : { 
      "match_all" : {} 
     }, 
     "fields": [] 
    } 
    ' 

Oder wenn ich Namen zu bekommen:

curl http://localhost:9200/search/etablissement/_search?pretty=true -d { ' 
     "query" : { 
      "match_all" : {} 
     }, 
     "fields": ['name'] 
    } 
    ' 

Danke

Antwort

0

Schließlich fand ich eine Antwort auf meine Frage. Ich frage mich nur, ob das der richtige Weg ist.

$elasticaService = $this->container->get('fos_elastica.index.search'); 
    $elasticaService->request("_search", "GET", array("fields"=>array()), array("match_all" => array(),"size" => 999999)) 

    $i = 1; 
    $data = array(); 
    if(isset($results["hits"]["hits"])){ 
     foreach($results["hits"]["hits"] as $result){ 
      $data[$i] = $result["_id"]; 
      ++$i; 
     } 
    } 
    return $data; 

um einen Fehler zu vermeiden ich hinzufügen musste:

"index.max_result_window: 999999" und "service apache2 restart" /etc/elasticsearch/elasticsearch.yml Konfiguration neu zu laden.

1

Sie können ID des Index durch den obigen Befehl erhalten:

curl -XGET 'http://localhost:9200/search/etablissement/1 

Dadurch erhalten Sie die erste ID des Dokuments.

oder Sie können Dokument filtern, indem Sie das Dokument-IDs spezifiziert

{ 
    "ids" : { 
     "type" : "my_type", 
     "values" : ["2", "34", "333"] 
    } 
} 
Verwandte Themen