ElasticSearch没有失败但返回不正确的结果

时间:2013-01-18 19:08:45

标签: ajax elasticsearch amplifyjs

我在我的应用程序中使用ajax切换到POST搜索,因此我可以开始使用日期范围。然而,似乎无论我发布什么,它都会在我的索引中返回前10个结果。真正的结果在30k范围内。

    amplify.request.define("searchPostRequest", "ajax", {
        url: "http://leServer:9200/people/person/_search",
        type: "POST",
        dataType: 'jsonp',
        contentType: 'application/json'
    });
    self.advancedSearchPostQuery = {
        query: {
           term: {
               locationNumber:479
            }
        }
    };
    console.log(self.advancedSearchPostQuery);
    amplify.request({
        resourceId: "searchPostRequest",
        data: JSON.stringify(self.advancedSearchPostQuery),
        success: function (data) {
            console.log(data.hits.hits.length);
        }
    });

2 个答案:

答案 0 :(得分:0)

如果这是您的实际代码,您的问题可能只是您的问题 advancedSearchPostQuery无效JSON。

您需要申请报价:

advancedSearchPostQuery = {
    "query": {
        "term": {
            "locationNumber": 479
        }
    }
}

而且我不确定你是否需要stringify这个对象,但是我不熟悉amplifyJS,所以如果magnifyjs期待一个对象或一个字符串,那么仔细检查一下。

如果这无法帮助检查从命令行到curl运行时查询是否返回正确的结果。

答案 1 :(得分:0)

在做了更多调试之后,我发现请求是作为GET发送的,即使我已经明确地将其设置为发布。将数据类型移动到json,从jsonp将请求作为POST发送,从而解决了问题。然而,这导致IE中的问题,其中由于请求被发送到另一个域而根本不发送请求。

    amplify.request.define("searchPostRequest", "ajax", {
        url: "http://leServer:9200/people/person/_search",
        type: "POST",
        dataType: 'json',
        contentType: 'application/json'
    });