0

我在我的应用程序中使用 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);
        }
    });
4

2 回答 2

0

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

您需要应用引号:

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

而且我不确定您是否需要stringify该对象,但我不熟悉 amplifyJS,所以如果 amplifyjs 需要一个对象或一个字符串,请仔细检查一下。

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

于 2013-01-19T00:37:31.807 回答
0

在进行更多调试后,我发现该请求是作为 GET 发送的,即使我已明确将其设置为发布。将数据类型从 jsonp 移动到 json,让请求作为 POST 发送,从而解决了问题。但是,这会在 IE 中导致一个问题,即由于请求被发送到另一个域,因此根本没有发送请求。

    amplify.request.define("searchPostRequest", "ajax", {
        url: "http://leServer:9200/people/person/_search",
        type: "POST",
        dataType: 'json',
        contentType: 'application/json'
    });
于 2013-01-22T13:28:32.450 回答