0
我需要爲ElasticSearch 5.1的查詢請求使用多個過濾器(範圍和術語)。如果我分開使用(只有一個過濾器),它是確定:ElasticSearch 5.1使用乘法濾波器過濾查詢
var o = new
{
size = 20,
query = new
{
@bool = new
{
must = new
{
query_string = new
{
fields = new[] { "Title" },
query = search_query
}
},
filter = new
{
terms = new
{
SourceId = new[] {10,11,12}
}
}
}
}
};
OR
var o = new
{
size = 20,
query = new
{
@bool = new
{
must = new
{
query_string = new
{
fields = new[] { "Title" },
query = search_query
}
},
filter = new
{
range = new
{
PostPubDate = new
{
gte = "2015-10-01T00:00:00",
lte = "2015-11-01T12:00:00"
}
}
}
}
}
};
如果我使用他們兩個我得到響應400錯誤:
string url = "http://localhost:9200/neg_collector/posts/_search";
var request = (HttpWebRequest)HttpWebRequest.Create(url);
var o = new
{
size = 20,
query = new
{
@bool = new
{
must = new
{
query_string = new
{
fields = new[] { "Title" },
query = search_query
}
},
filter = new
{
terms = new
{
SourceId = new[] {10,11,12}
},
range = new
{
PostPubDate = new
{
gte = "2015-10-01T00:00:00",
lte = "2015-11-01T12:00:00"
}
}
}
}
}
};
request.Method = "POST";
var jsonObj = JsonConvert.SerializeObject(o);
var data = Encoding.UTF8.GetBytes(jsonObj);
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;
using (var stream = request.GetRequestStream())
{
stream.Write(data, 0, data.Length);
}
string responseString = string.Empty;
var response = (HttpWebResponse)request.GetResponse();
我是什麼做錯了?謝謝
謝謝你很多!它現在有效 –
真棒,很高興它的工作! – Val