2013-01-18 53 views
0

我在我的应用程序中使用ajax切换到POST搜索,所以我可以开始使用日期范围。不过,无论我发布什么内容,它都会不断返回索引中的前10条结果。真正的结果是在30k范围内。ElasticSearch不失败,但返回不正确的结果

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

回答

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' 
    }); 
0

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

您需要申请报价:

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

而且我不知道你是否需要stringify的对象,但我不熟悉amplifyJS,使上,以及如果amplifyjs双重检查期待一个物体或一个字符串。

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