全部, 从这里的文档https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-multi-termvectors.html我看到有多种方式来提出请求。
我可以将POST / _mtermvectors作为
MultiTermVectorsRequest tvr = new MultiTermVectorsRequest()
{
Documents = Enumerable.Range(1,2).Select(n => new MultiTermVectorOperation<Tweet>(n)
{
StoredFields = new [] {"message"},
Index = "twitter",
FieldStatistics = false,
TermStatistics = true,
Positions = false,
Offsets = false
})
};
看起来像
{
"docs": [
{
"_index": "twitter",
"_type": "tweet",
"_id": 1,
"fields": [
"message"
],
"offsets": false,
"positions": false,
"term_statistics": true,
"field_statistics": false
},
{
"_index": "twitter",
"_type": "tweet",
"_id": 2,
"fields": [
"message"
],
"offsets": false,
"positions": false,
"term_statistics": true,
"field_statistics": false
}
]
}
我的问题是如何将请求更改为POST / twitter / tweet / _mtermvectors,使其看起来像
{
"ids" : ["1", "2"],
"parameters": {
"fields": [
"message"
],
"term_statistics": true
}
}
我希望它是一个单独的请求,并将id指定为字符串数组,以减少请求的大小。另外,我如何在此请求中添加min_doc_frequency等过滤器?
感谢您的帮助。
答案 0 :(得分:0)
高级客户端不支持包含"ids"
和"parameters"
的格式。可以通过低级客户端发送它并返回高级别响应
var response = client.LowLevel.Mtermvectors<MultiTermVectorsResponse>(
"twitter",
"tweet",
new
{
ids = new [] { "1", "2" },
parameters = new
{
fields = new [] { "message" },
term_statistics = true
}
});
var highLevelResponse = response.Body;