我正在尝试使用ajax查询ElasticSearch,但我总是得到相同的结果,即使我更改查询它仍然相同。似乎匹配部分没有被执行。因为如果我添加更多字段,例如发布日期,我就会获得该数据。
这是html代码:
<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<h1>Search Result!</h1>
<br />
<input id="searchterm" />
<button id="search">search</button>
<div id="results"></div>
<script>
$("#search").click(function(e){
var data = {
query:{match:{_all:$('#searchterm').val()}},
pretty: true,
fields: '_id'
};
alert(JSON.stringify(data));
$.ajax({
url: 'http://localhost:9200/movies/_search',
dataType: 'jsonp',
type: 'POST',
crossDomain: true,
data: data,
success: function(data) {
//alert(""+JSON.parse(data.hits.total));
$("#results").empty();
$("#results").append("<p>Results for <b>" + $("#searchterm").val() + "</b></p>");
$.each(data.hits.hits, function(i,item){
$("#results").append("<div><a href='#'>" + item._id + "</a></div>");
});
}
});
});
</script>
</body>
</html>
输出:
搜索结果!
愤怒
的结果叛乱分子(2015年)
星球大战:第七集 - 原力觉醒(2015)
Ant-Man(2015)
侏罗纪世界(2015)
灰姑娘(2015)
Daredevil(2003)
努力学习(2015)
复仇者联盟:奥创纪元(2015)
Batman v Superman:Dawn of Justice(2016)
主页(2015)
结果与输入的关键字无关,输出应该是电影名称中包含愤怒的所有电影。但是,我仍然会收到前10部电影。
任何建议都可能是一个很大的帮助。
答案 0 :(得分:1)
我得到了这个工作,我已经列出了下面的更改:
通过监控chrome开发人员工具中的请求标头进行分析。
以下是工作代码:
<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<h1>Search Result!</h1>
<br />
<input id="searchterm" />
<button id="search">search</button>
<div id="results"></div>
<script>
$("#search").click(function(e){
var data = {
query:{match:{_all:$('#searchterm').val()}},
fields: '_id'
};
alert(JSON.stringify(data));
$.ajax({
url: 'http://localhost:9200/movies/_search',
dataType: 'json',
type: 'POST',
contentType: 'application/json',
crossDomain: true,
data: JSON.stringify(data),
success: function(data) {
//alert(""+JSON.parse(data.hits.total));
$("#results").empty();
$("#results").append("<p>Results for <b>" + $("#searchterm").val() + "</b></p>");
$.each(data.hits.hits, function(i,item){
$("#results").append("<div><a href='#'>" + item._id + "</a></div>");
});
}
});
});
</script>
</body>
</html>
我希望它有所帮助。