本文介绍了弹性搜索的自动完成/前导角度引导的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在寻找一个工作的解决方案,以便在弹性搜索服务器上使用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; }); } });
希望它有助于
更多推荐
弹性搜索的自动完成/前导角度引导
发布评论