【问题标题】:ElasticSearch not failing but returning incorrect resultsElasticSearch 没有失败但返回不正确的结果
【发布时间】:2013-01-18 19:08:44
【问题描述】:

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

【问题讨论】:

    标签: ajax elasticsearch amplifyjs


    【解决方案1】:

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

    您需要使用引号:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2014-09-13
        • 2017-11-28
        • 2023-03-14
        • 2012-08-01
        • 2014-05-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多