Последняя запись из Elasticsearch Rails на основе нескольких индексов

У меня есть две модели в моем приложении Rails: Share и Rent.

Я начинаю использовать ElasticSearch в своем приложении и хотел, чтобы способ принести модели аренду и поделиться последними.

Я попробовал следующее:

@response = Elasticsearch::Model.search query:     {
  "indices": {
    "indices": [
      "shares",
      "rents"
    ],
    "query": {
      "multi_match": {
        "query": "Apartament",
        "fields": [ "tipe"]
      }
    },
    "no_match_query": {
      "term": {
        "": ""
      }
    },

  }
}

Но я не знаю, как вывести самое последнее по create_at поле.

2 ответа

  1. Elasticsearch позволяет сортировать в соответствии с полем, я не знаком с Rails, но я думаю, что вы должны попробовать это:

    @response = Elasticsearch::Model.search query:     {
      "indices": {
        "indices": [
          "shares",
          "rents"
        ],
        "sort": {
           "create_at": {
              "order": "desc"
           }
        },
        "query": {
          "multi_match": {
            "query": "Apartament",
            "fields": [ "tipe"]
          }
        }
      }
    }
    
  2. Я решил проблему следующим образом:

    @response = Elasticsearch::Model.search query: {
          "indices": {
            "indices": ["shares","rents"],
            "query": {"match_all": {}
          }
        }, 
        size:10, 
        "sort": [
          {"created_at": {"order": "desc"}}
        ]