使用fosElasticaBundle(3.1.0)获取某个索引的_ids的最快方法是什么? 我的索引有大约30,000个文档。
例如,我将获得fosElastica所有ID的列表。等效Elasticsearch:
curl http://localhost:9200/search/etablissement/_search?pretty=true -d { '
"query" : {
"match_all" : {}
},
"fields": []
}
'
或者,如果我想得到名字:
curl http://localhost:9200/search/etablissement/_search?pretty=true -d { '
"query" : {
"match_all" : {}
},
"fields": ['name']
}
'
谢谢
答案 0 :(得分:1)
您可以通过以上命令获取索引的ID:
def longest_word(sentence)
sentence.split(/\s+/).max_by(&:size)
end
这将为您提供文档的第一个ID。
或 您可以通过指定文档ID来过滤文档
curl -XGET 'http://localhost:9200/search/etablissement/1
答案 1 :(得分:0)
最后我找到了问题的答案。我只是想知道这是否正确。
$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;
为了避免错误我必须添加:
“index.max_result_window:999999”到/etc/elasticsearch/elasticsearch.yml 和“service apache2 restart”重新加载配置。