【发布时间】:2014-09-29 12:34:05
【问题描述】:
我需要使用 Ajax 进行 Elastic Search 查询。我要做的是搜索特定的类别名称,并返回与该类别关联的名称列表。 Elastic Search 中的结构是每个 _source 都有一个 name 字段(类别的名称)和一个 items 字段。它也有 name.raw 以便我可以按确切名称搜索。
这是我的要求:
var query = {
query: {
filtered: {
filter: {
term: { "name.raw": category }
}
}
}
}
$.ajax({
url: "http://192.168.0.240:9200/dropdowns/category/_search",
type: 'post',
dataType: 'json',
success: function(data) {
alert("Success");
},
error: function(data) {
// should be only one item in hits
$(data.hits.hits).each(function(index, hit) {
alert(hit._source.items);
});
},
data: query
});
目前,我正在尝试让它工作得足以提醒我注意命中中的项目。我收到 400 错误请求错误。我的 Ajax 调用出了什么问题?
【问题讨论】:
-
你的ajax请求类型不应该是
get吗? -
我认为您的 AJAX 调用没有任何问题。如果您的查询不正确,Elasticsearch 会返回 400。您应该在错误函数中查看
data以了解您的查询问题。它可能与不正确的映射有关,因为您正在尝试进行嵌套搜索。此外,data.hits.hits只会成功。错误永远不会返回命中。 -
对,那么查询有什么问题?
-
从我所见,本质上没有任何东西。您需要在
error回调中将错误消息记录到控制台,以查看弹性搜索服务器告诉您的内容。如果您想轻松测试查询,请使用curl或 Elasticsearch Sense elasticsearch.org/guide/en/marvel/current/#_sense -
对不起,我是新手,你能告诉我怎么做吗?如何将错误消息记录到控制台?
标签: ajax search post filter elasticsearch