Этого можно добиться с помощью _msearch
. API.
Ниже приведен пример запроса о том, как вы можете применить это:
POST myalias/_msearch
{"index" : "myindex_news_sports"}
{"query" : {"match_all" : {}}, "from" : 0, "size" : 1}
{"index" : "myindex_news_economics"}
{"query" : {"match_all" : {}}, "from" : 0, "size" : 1}
По сути, _msearch
позволяет выполнять поиск по нескольким запросам с использованием одного и того же API. Есть два разных запроса, в которых вы можете указать size
для двух разных индексов.
Обратите внимание, что результаты будут отображаться в отдельных группах JSON (два результата, по одному для каждого запроса).
Пример ответа:
{
"took" : 4,
"responses" : [
{ <---- Response for Index 1
"took" : 4,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 2,
"relation" : "eq"
},
"max_score" : 1.0,
"hits" : [
{
"_index" : "myindex_news_sports",
"_type" : "_doc",
"_id" : "2",
"_score" : 1.0,
"_source" : {
"fooNested" : {
"sigma" : 9,
"theta" : 1
}
}
},
{
"_index" : "myindex_news_sports",
"_type" : "_doc",
"_id" : "4",
"_score" : 1.0,
"_source" : {
"fooNested" : {
"sigma" : 9,
"theta" : 1
}
}
}
]
},
"status" : 200
},
{ <---- Response for Index 2
"took" : 2,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 4,
"relation" : "eq"
},
"max_score" : 1.0,
"hits" : [
{
"_index" : "myindex_news_economics",
"_type" : "_doc",
"_id" : "2",
"_score" : 1.0,
"_source" : {
"fooNested" : {
"sigma" : 9,
"theta" : 1
}
}
},
{
"_index" : "myindex_news_economics",
"_type" : "_doc",
"_id" : "1",
"_score" : 1.0,
"_source" : {
"fooNested" : {
"sigma" : 9,
"theta" : 1
}
}
}
]
},
"status" : 200
}
]
}
Не уверен, что это было бы идеально для вас, я просто надеюсь, что это поможет.
person
Opster ES Ninja - Kamal
schedule
13.06.2019