Шлюз AWS API и эластичный поиск получают запрос - PullRequest
0 голосов
/ 22 февраля 2019

Мне нужно вызвать эластичную поисковую систему напрямую из шлюза API, используя http-соединение, например.

https: //// _ doc / _search? Pretty & filter_path = hit.hits._source

У меня естьn количество заказов в эластичной поисковой системе, которые я хочу получить с помощью запроса get, но мне нужен только массив json, который я разместил и не хочу никакой другой информации в ответе. как я могу это сделать?

например.

вот что я получаю:

   {
      "hits" : {
        "hits" : [
          {
            "_index" : "gpss_orders",
            "_type" : "_doc",
            "_id" : "4867254",
            "_score" : 1.0,
            "_source" : {
              "orderId" : 4867254,
              "loadId" : 18214,
              "orderTypeId" : 1
          }
       ]
     }
   }

Но я бы хотел получить ответ примерно такой:

[ {
                  "orderId" : 4867254,
                  "loadId" : 18214,
                  "orderTypeId" : 1
              }]

нужно ли мне изменить ответ API-интерфейса шлюза?

Я изменил шаблон ответа метода шлюза API и получил ожидаемый результат

#set($esOutput = $input.path('$.hits.hits'))
#set($orders = [])
#foreach( $elem in $esOutput )
 #set($order = $elem["_source"])
 #set($response = $orders.add($order) )
#end
$orders

, но теперь проблема, с которой я сталкиваюсь, заключается в том, что, хотя ответ от упругой поисковой системы является надлежащим json, ответпосле обновления метода интеграции шаблон становится таким без скобок:

[{orderId=4867254, loadId=18214, orderTypeId=1, orderTypeName=Fuel}]

ответ от упругого поиска:

"took" : 1,
  "hits" : {
    "hits" : [
      {
        "_id" : "4867254",
        "_score" : 1.0,
        "_source" : {
          "orderId" : 4867254,
          "loadId" : 18214,
          "orderTypeId" : 1,

1 Ответ

0 голосов
/ 22 февраля 2019

Нет способа сформировать возвращаемый объект из эластичного поиска.В зависимости от того, как вы получаете доступ к этим данным, у вас может быть свой собственный серверный код, поскольку прокси-сервер выполняет запрос и удаляет постороннюю информацию, прежде чем возвращать ее клиентам.Бонус заключается в том, что вы можете использовать прокси-сервер, чтобы решить, какую информацию возвращать в зависимости от таких факторов, как разрешения, кэширование или ограничение скорости и т. Д.

...