使用AJAX查询elasticsearch中的动态聚合

时间:2015-02-03 17:39:14

标签: javascript jquery ajax elasticsearch

我正在尝试根据使用映射查询的一组字段动态构建聚合。 这是代码。

$(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));                      
                    }                                                               
                });                                                                 
            }                                                                       
        });                                                                         
    });

当我执行查询时,它会正常返回命中数,而不会进行聚合。我做错了什么?

如果您需要更多代码,请询问。

1 个答案:

答案 0 :(得分:2)

您需要将查询发送为POST而不是GET。 当您将其作为GET发送时,虽然您正在使用_search API,但不会考虑查询部分。因此,您只需从索引中获取前N个文档。