好的,我认为您有两个问题。
问题1:
您看起来像是在使用10.0版之前的预输入API。要使用远程,您必须使用Bloodhound或类似的东西来获取结果。
我最近实现了此功能,这是一个有效的示例:
var $vartypeahead = $(yourjqueryelement);var engine = new Bloodhound({ name: 'typeaheads', remote: {"url":'/search/typeahead?q=%QUERY'}, datumTokenizer: function(d) { return d;}, queryTokenizer: function(d) { return d;}});engine.initialize();$vartypeahead.typeahead({ "minLength": 2, "highlight": true }, { "source": engine.ttAdapter() });
我确实必须对所做的事情稍作修改;我在前端使用骨干并将上面的内容拼接到其中(为此,我在typeahead项目中拥有PR)
问题二
就ES而言,我不确定您的映射是否正确,通常您用于预输入项目的映射将如下所示:
{ "settings": { "analysis": { "filter": { "autocomplete_ngram": { "max_gram": 24, "min_gram": 2, "type": "edge_ngram" } }, "analyzer": { "autocomplete_index": { "filter": [ "lowercase", "autocomplete_ngram" ], "tokenizer": "keyword" }, "autocomplete_search": { "filter": [ "lowercase" ], "tokenizer": "keyword" } } }, "index": { "number_of_shards": 20, "number_of_replicas": 1 } }, "mappings": { "yourtype": { "properties": { "title": { "type": "multi_field", "fields": { "title_edgengram": { "type": "string", "index": "analyzed", "index_analyzer": "autocomplete_index", "search_analyzer": "autocomplete_search" }, "title": { "type": "string", "index": "not_analyzed" } } } } } }}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)