使用 AJAX 在 elasticsearch 中查询动态聚合
Querying dynamic aggregation in elasticsearch with AJAX
我正在尝试根据使用映射查询的一组字段动态构建聚合。
这是代码。
$(document).ready(function(){
var query = {
aggs:{
sum_of_too_many_tries:{
sum:{
field:"reason.too_many_tries"
}
}
}
};
$.ajax({
url: "http://10.138.16.125:9200/log/blocks/_mapping",
type: "get",
async: false,
crossDomain: true,
success: function(data) {
var fields = Object.keys(data.log.mappings.blocks.properties.reasons.properties);
$.ajax({
url: "http://10.138.16.125:9200/log/blocks/_search",
crossDomain: true,
async: false,
type: "get",
dataType: "json",
data: JSON.stringify(query),
success: function(response) {
$("#dump").append(var_dump(response));
}
});
}
});
});
当我进行查询时,它 returns 正常命中,没有聚合。我做错了什么?
如果您需要更多代码,请询问。
您需要以 POST 而非 GET 方式发送您的查询。
当您将其作为 GET 发送时,尽管您正在点击 _search API ,但不考虑查询部分。因此,您只会从索引中获取前 N 个文档。
我正在尝试根据使用映射查询的一组字段动态构建聚合。 这是代码。
$(document).ready(function(){
var query = {
aggs:{
sum_of_too_many_tries:{
sum:{
field:"reason.too_many_tries"
}
}
}
};
$.ajax({
url: "http://10.138.16.125:9200/log/blocks/_mapping",
type: "get",
async: false,
crossDomain: true,
success: function(data) {
var fields = Object.keys(data.log.mappings.blocks.properties.reasons.properties);
$.ajax({
url: "http://10.138.16.125:9200/log/blocks/_search",
crossDomain: true,
async: false,
type: "get",
dataType: "json",
data: JSON.stringify(query),
success: function(response) {
$("#dump").append(var_dump(response));
}
});
}
});
});
当我进行查询时,它 returns 正常命中,没有聚合。我做错了什么?
如果您需要更多代码,请询问。
您需要以 POST 而非 GET 方式发送您的查询。 当您将其作为 GET 发送时,尽管您正在点击 _search API ,但不考虑查询部分。因此,您只会从索引中获取前 N 个文档。