我使用elasticsearch與laravel 5:如何使用elasticsearch並自動完成的jQuery與建議陣列
做了很多的搜索和QBOX閱讀文章和elasticsearch約[當你鍵入結果]但我想只顯示結果從suggested_tags和jquery自動完成只顯示數組中的建議標籤不是全部。
我有很多建議文本在數組中提交elasticsearch命名爲suggested_tags,你可以在圖片中看到很多。我想通過搜索,並使用此查詢:
Showing Result In Sense kibana plugin
GET yourservice/_search
{
"query": {
"match": {
"suggested_tags": {
"query": "car",
"type": "phrase_prefix",
"operator": "and",
"fuzziness": 1.1
}
}
}
}
這一個顯示錯誤的結果並顯示出靠近汽車約17相同的重複多個結果。
如果使用此查詢:
GET yourservice/_search
{
"query": {
"match": {
"suggested_tags": "car"
}
}
}
結果數是2,但同樣的例子:
jQuery的自動完成功能顯示:
汽車和汽車 汽車和汽車
在嫋嫋查詢顯示兩個結果,但在laravel搜索與jquery自動完成顯示多個相同的結果看圖像。
我只是困惑,爲什麼elasticsearch不同的結果,而不是導致我打字。
這裏是jQuery代碼:
$(function() {
$("#search").autocomplete({
source: function(request, response) {
var wildcard = { "name": "*" + request.term.toLowerCase() + "*" };
var postData = {
"query": { "wildcard": wildcard },
"fields": ["name", "title"]
};
$.ajax({
url: "/api/search?query=" + $("#search").val(),
type: "GET",
success: function(data) {
response($.map(data.hits.hits, function(item) {
return {
label: item._source.name,
id: item._source.title
}
}));
},
});
},
minLength: 1
})
});
和查詢與laravel使用:
$params = [
'index' => 'yourservice',
'type' => 'categories',
'body' => [
"query" => [
"match" => [
"suggested_tags" => \Input::get("query")
]
]
]
];
感謝