Как написать запрос эластичного поиска? - PullRequest
0 голосов
/ 04 июля 2018

У меня есть такой индекс индекса

{
    "_index": "zody_review",
    "_type": "review",
    "_id": "5b3c6c9e68cf860e1af5f7fd",
    "_score": null,
    "_source": {
      "user": "571899623dc63af34d67a662",
      "merchant": "56f8f80119a4c1ae791cf7bf",
      "point": 3,
      "score": 2,
      "createdAt": "2018-07-04T13:43:42.331+07:00",
      "location": {
        "lat": 16.07054040054832,
        "lon": 108.22062939405441
      },
      "feedback": "Phuc vu khong tot lam "
    }
},

Как я могу запросить, чтобы получить обзор списка поблизости, но не более 5 отзывов для каждой группы по полевому продавцу? Я застрял здесь слишком долго! Спасибо!

1 Ответ

0 голосов
/ 04 июля 2018

Вам нужно только вернуть отзывы, которые находятся (скажем, в 100 метрах) от заданного местоположения, а затем вам нужно агрегировать по marchant terms и добавить top_hits субагрегацию. Это выглядит так:

{
  "size": 0,
  "query": {
    "geo_distance": {
      "distance": "100m",
      "location": {
        "lat": 16.07055,
        "lon": 108.2207
      }
    }
  },
  "aggs": {
    "by_merchant": {
      "terms": {
        "field": "merchant"
      },
      "aggs": {
        "top_5": {
          "top_hits": {
            "_source": [
              "feedback"
            ],
            "size": 5
          }
        }
      }
    }
  }
}

Просто замените местоположение тем, которое вы хотите найти, и, вероятно, расстоянием, если вам нужно большее или меньшее расстояние.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...