мультизапрос эластичного поиска с клиентом alpakka -asticsearch - PullRequest
2 голосов
/ 18 июня 2019

Я новичок в scala, использую клиент alpakka -asticsearch для выполнения запроса с эластичным поиском.

Одиночный поисковый запрос работает нормально двумя способами, которые внутренне вызывают _search url эластичного поиска:

val writeCustomIndex = ElasticsearchSource
 .typed[Book](
  indexName = "source",
  typeName = "_doc",
  query = """{"match_all": {}}"""
 )

OR

val readWithSearchParameters = ElasticsearchSource
.typed[TestDoc](
  indexName,
  Some(typeName),
  searchParams = Map(
  "query" -> """ {"match_all": {}} """,
  "_source" -> """ ["id", "a", "c"] """
  )

Мне нужно выполнить несколько запросов (_msearch) ниже с этим клиентом.

url - http://localhost:9200/index1/_msearch?
request :
[
 {"query" : {"match_all" : {}}, "from" : 0, "size" : 1},
 {"index" : "index2"},
 {"query" : {"match_all" : {}}, "from" : 0, "size" : 2}
]

эластичный клиентский источник: https://doc.akka.io/docs/alpakka/current/elasticsearch.html

1 Ответ

0 голосов
/ 19 июня 2019

Пробовал с одним подходом согласно предложению, где я объединил два источника.

Надеюсь, это может кому-то помочь!

 var elasticRecord: Future[Seq[ElasticRecord]] = ElasticsearchSource
  .typed[ElasticRecord](
  indexName1,
  Some(typeName1),
  query1,
  settings = ElasticsearchSourceSettings()).map { message =>
  message.source
}.merge(ElasticsearchSource
  .typed[ElasticRecord](
  indexName2,
  Some(typeName2),
  query1,
  settings = ElasticsearchSourceSettings()).map { message =>
  message.source
}).runWith(Sink.seq)
...