本文介绍了弹性搜索的自动完成/前导角度引导的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在寻找一个工作的解决方案,以便在弹性搜索服务器上使用angularjs& bootstrap来获取自动完成/打字。
I was looking for a working solution to get autocomplete/typeahead with angularjs&bootstrap on elasticsearch server.
推荐答案
一个工作的解决方案,而不是一个问题,但我想分享它希望它会帮助:
This is a working solution, not a question, but I want to share it hope it will help:
html代码调用自动完成功能:
the html code to call the autocomplete function :
<input required type="text"
popover-trigger="focus"
placeholder="recherche globale"
class="form-control"
ng-model="simplequeryInput"
ng-model-onblur focus-on="focusMe"
ng-click="searchSimple=true" ng-keyup="$event.keyCode == 13 ? submitSimple() : null"
typeahead="item for item in autocomplete($viewValue) | limitTo:15 "
typeahead-on-select="simplequeryInput=$model"
/>
-
包含弹性搜索(v2.4.0)脚本
可用我的弹性搜索服务
interfaceApp.service('elasticQuery', function ($rootScope,esFactory) { return esFactory({ host: $rootScope.elastic_host}); //'localhost:9200' });
-
angularjs代码查询elasticsearch:
angularjs code querying elasticsearch :
'use strict'; var searchModules = angular.module('searchModules', ['ngRoute','ngDialog']); searchModules.controller('searchCtrl', function (ngDialog,$scope, $http,$rootScope, elasticQuery) { ... $scope.autocomplete = function(val) { var keywords = []; keywords.push(val); // THIS RETURN IS VERY IMPORTANT return elasticQuery.search({ index: 'YOUR_INDEX_NAME', size: 15, body: { "fields" : ["T_FAMILY","T_GENUS","T_SCIENTIFICNAME"], // the fields you need "query" : { "bool" : { "must" : [ { "query_string" : { "query" : "T_FAMILY:"+val // i want only source where FAMILY == val } } ] } } } }).then(function (response) { for (var i in response.hits.hits) { var fields = (response.hits.hits[i]).fields; var tmpObject = fields["T_FAMILY"] +" " + fields["T_GENUS"] + " ( "+fields["T_SCIENTIFICNAME"] + " )"; keywords.push(tmpObject); } return keywords; }); } });
希望它有助于
这篇关于弹性搜索的自动完成/前导角度引导的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!