开始使用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(七)之搜索实践
可以了可以了。哈哈哈哈哈。

后面的分词,拼音模糊,前后顺序的调整我再慢慢的改过来。

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