Ajax 来自弹性搜索过滤查询的 400 个错误请求
Ajax 400 bad request from an elastic search filtered query
我想在查询具有过滤器时使用Ajax从elasticsearch 检索数据。
我正在使用 GET。
我的代码如下:
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script>
$(document).ready(function(){
$.ajax({
type: 'GET',
url : 'HOST/tomo2o/shop/_search',
crossDomain: true,
data: JSON.stringify({"query":{"match":{"catlev1":"Motors"}}}),
contentType:'application/json; charset=utf-8',
dataType: 'json',
success: function(data) {
console.log(data);
},
error: function(e) {
console.log(e);
}
});
});
</script>
我做了人们建议做的 3 件事:
- 字符串化 json 过滤器
- 设置数据类型为json
- 设置内容类型为application/json
但我仍然收到以下错误:
GET HOST/tomo2o/shop/_search?{%22query%22:{%22match%22:{%22catlev1%22:%22Motors%22}}} 400 (Bad Request)
当你想传递一个DSL query in the query string时,你需要在source
参数中传递它并且还要添加一个source_content_type
参数来指示内容类型
所以你可以这样做:
$.ajax({
type: 'GET',
url : 'HOST/tomo2o/shop/_search',
crossDomain: true,
data: {
source: JSON.stringify({"query":{"match":{"catlev1":"Motors"}}}),
source_content_type: "application/json"
},
contentType:'application/json; charset=utf-8',
dataType: 'json',
success: function(data) {
console.log(data);
},
error: function(e) {
console.log(e);
}
});
我想在查询具有过滤器时使用Ajax从elasticsearch 检索数据。 我正在使用 GET。
我的代码如下:
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script>
$(document).ready(function(){
$.ajax({
type: 'GET',
url : 'HOST/tomo2o/shop/_search',
crossDomain: true,
data: JSON.stringify({"query":{"match":{"catlev1":"Motors"}}}),
contentType:'application/json; charset=utf-8',
dataType: 'json',
success: function(data) {
console.log(data);
},
error: function(e) {
console.log(e);
}
});
});
</script>
我做了人们建议做的 3 件事:
- 字符串化 json 过滤器
- 设置数据类型为json
- 设置内容类型为application/json
但我仍然收到以下错误:
GET HOST/tomo2o/shop/_search?{%22query%22:{%22match%22:{%22catlev1%22:%22Motors%22}}} 400 (Bad Request)
当你想传递一个DSL query in the query string时,你需要在source
参数中传递它并且还要添加一个source_content_type
参数来指示内容类型
所以你可以这样做:
$.ajax({
type: 'GET',
url : 'HOST/tomo2o/shop/_search',
crossDomain: true,
data: {
source: JSON.stringify({"query":{"match":{"catlev1":"Motors"}}}),
source_content_type: "application/json"
},
contentType:'application/json; charset=utf-8',
dataType: 'json',
success: function(data) {
console.log(data);
},
error: function(e) {
console.log(e);
}
});