開始使用ElasticSearch(七)之搜索實踐

   上次研究到了搜索模板,那麼一直在工具上請求也不是辦法,總歸是要融入到實際應用中

去才顯得接地氣吧!
那麼廢話不多說,我就開始了,先讓我來打打小算盤。
1.環境配置做好了
2.數據導入做好了
3.基礎查詢懂了
4.模板也會了
5.搜索提示也知道了





那麼接下來需要做的事情就是:
1.把原來項目的搜索框加入我們研究的東西,拼湊起來變成一個完整的結果。
那麼我們要做的有:
1.寫一個數據請求到9200服務端獲取結果。
2.將結果返回展示到頁面。
3.做好提示框匹配樣式




> 1.寫一個數據請求到9200服務端獲取結果。
哥哥們可以看看我寫的請求,這裏爲了方便學習所以寫的比較簡單

開始使用ElasticSearch(七)之搜索實踐

這是C#服務端的,我沒有查文檔自己根據引用的dll做了簡單的快速監視調試出了這個語句。
1.先連接9200服務器
2.拋出key參數
3.post請求獲取json返回
這個結果需要引用2個類dll



開始使用ElasticSearch(七)之搜索實踐

這我只做個示範,給不會前端的朋友借鑑一下。

開始使用ElasticSearch(七)之搜索實踐

這是前端請求寫法,更通用一點,這裏我做了以下幾件事:
var raw = JSON.stringify({ "id": "forum_search_goods", "params": { "field": "model", "query": "" + q + "", "size": 10 } }); 定義了請求參數
這個就是我之前寫的模板啦,我這邊就是調用已經存儲的模板

$.ajax(
{
url: "http://127.0.0.1:9200/data/_search/template",
async: false,
type: 'post',
dataType: "json",
data: raw,
contentType: "application/json;charset=UTF-8",
success: function (data) {
dataObj = data.hits.hits;








                            for (var i = 0; i < data.hits.hits.length; i++) {
                                matches.push(data.hits.hits[0]._source.model);
                            }

                            cb(matches);
                        },
                        error: function (data, status, e)//服務器響應失敗處理函數
                        {
                            console.log(data.responseText);
                        }
                    }
                );

            };
        };

這裏是請求9200服務端。那麼我們就來試一下咯。

開始使用ElasticSearch(七)之搜索實踐
輸入1,咋沒反應呢?打開瀏覽器監視器看看
開始使用ElasticSearch(七)之搜索實踐
啥玩意我就跨域了。這個問題我去百度搜了好久都沒找到答案,然後我想到了jsonp
但是發現請求過去之後,跨域問題是沒有了,又報了個新錯誤。
開始使用ElasticSearch(七)之搜索實踐
什麼玩意啊,氣死我了。
開始使用ElasticSearch(七)之搜索實踐
network裏面啥都沒顯示。
開始使用ElasticSearch(七)之搜索實踐
把錯誤的鏈接直接請求返回了這個錯誤,很明顯是我請求的問題,導致了服務端無法正確的識別
纔會拋出400錯誤。我找了很久找不到問題。










開始使用ElasticSearch(七)之搜索實踐
查了下文檔,原來es對於請求自帶的參數不會做處理,然後傳遞過來之後es拿到了會識別不出來
那咋辦,那麼既然這樣他肯定是有配置的地方,那麼我找到了這2句話,讓ES支持跨域,然後回
過頭來把jsonp改成json請求下。


開始使用ElasticSearch(七)之搜索實踐
總算是進入success裏面了,開心開心,基本上算是一個小目標了。

開始使用ElasticSearch(七)之搜索實踐
接下來我定義了一系列tyhead得樣式,這個樣式是根據文檔寫的

開始使用ElasticSearch(七)之搜索實踐
然後這在source下面我需要自定義我們的聯想框,這裏是我寫的,然後啓動試試看。

開始使用ElasticSearch(七)之搜索實踐
可以了可以了。哈哈哈哈哈。

後面的分詞,拼音模糊,前後順序的調整我再慢慢的改過來。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章