我在我的应用程序中使用https://github.com/elastic/elasticsearch-js ElasticSearch客户端。 我想使用Multi Search API并使用 filter_path 参数减少响应。 在Kibana请求看起来像:
POST _msearch?filter_path=responses.hits.total
{ "index": "first_index" }
{"query": {"term": {"status": 1}} }
{ "index": "second_index" }
{"query": {"term": {"status": 1}} }
响应:
{
"responses": [
{
"hits": {
"total": 1935
}
},
{
"hits": {
"total": 1212
}
}
]
}
但我找不到 client.msearch 方法中 filter_path 参数的正确位置。类似的东西:
client.msearch({
body: [
{ "index": "first_index" },
{ "q": 'filter_path=responses.hits.total' },
{"query": {"term": {"status": 1}} },
{ "index": "second_index" },
{ "q": 'filter_path=responses.hits.total' },
{"query": {"term": {"status": 1}} }
]
})
不起作用。 如何使用Node.js ElasticSearch Client发送此请求?
答案 0 :(得分:0)
filterPath关键字应与body
在同一级别。
client.msearch({
body: [
{ "index": "first_index" },
{"query": {"term": {"status": 1}} },
{ "index": "second_index" },
{ "q": 'filter_path=responses.hits.total' },
{"query": {"term": {"status": 1}} }
],
filterPath: "responses.hits.total"
})
msearch函数的参数类型为MSearchParams。
msearch<T>(params: MSearchParams): Promise<MSearchResponse<T>>;
我建议您安装elasticsearch type definition,以便可以看到类型层次结构
export interface MSearchParams extends GenericParams {
search_type?: "query_then_fetch" | "query_and_fetch" | "dfs_query_then_fetch" | "dfs_query_and_fetch";
maxConcurrentSearches?: number;
index?: NameList;
type?: NameList;
}
export interface GenericParams {
requestTimeout?: number;
maxRetries?: number;
method?: string;
body?: any;
ignore?: number | number[];
filterPath?: string | string[];
}