我正在使用symfony 2.2 + FoqElasticaBundle
我尝试使用结果查询elasticsearch
中的自动完成功能<input type="text" class="span3" id="search" data-provide="typeahead" data-items="4" />
var subjects = ['PHP', 'MySQL', 'SQL', 'PostgreSQL', 'HTML', 'CSS', 'HTML5', 'CSS3', 'JSON'];
$('#search').typeahead({source: subjects})
自动完成就像这样,但是......
如何让我的elasticsearc网址替换这样的主题?
var subjects = "http://myhost:9200/_search?pretty=true";
我希望自动填充的来源是我的查询弹性搜索
的结果答案 0 :(得分:2)
使用typeahead,您可以使用来自服务器的数据,如:
function search() {
$('#search').typeahead({
source: function (query, process) {
return $.get("{{path("url_to_fetch_from_server", {_format: "json"})}}", { "query" : query }, function (data) {
return process(data);
});
}
});
};
$(function(){
search();
});
正如您所看到的,预先输入源函数需要2个参数。
服务器应以JSON格式回复。您可以将“{{path(”url_to_fetch_from_server“,{_ format:”json“})}}”替换为您的真实网址。
public function queryAction(){
$query = $this->getRequest()->query->get("query");
$gType = $this->container->get('foq_elastica.finder.search_db');
$results = $gType->find($query, 20);
$tools = [];
foreach($results as $result){
$tools[] = $result->getTool();
}
return new Response(json_encode($tools));
}