Elasticsearch получает все ключи атрибутов и значения ключей в рамках определенного поиска - PullRequest
0 голосов
/ 26 июня 2019
-----------------------------

name = galaxy note

attributes
   type = phone
   weight = 140gm

-----------------------------

name = shirt

attributes
   type = clothing
   size = m

-----------------------------

name = iphone x

attributes
   type = phone
   screen size = 6.5 inch

-----------------------------

(See  GET   /catalog/article/_search  below... )

С помощью какого запроса я могу получить все атрибутные ключи, доступные в текущем поиске, например:

  • тип
  • вес
  • размер
  • размер экрана

С помощью какого запроса я могу получить все значения атрибутов, доступные в текущем поиске для конкретного ключа атрибута, результат, как при получении 'type':

  • телефон (2)
  • одежда (1)

Или еще лучше и проще запрос, где я получаю эти 2 вместе в текущем поиске:

  • тип

    • телефон (2)
    • одежда (1)
  • вес

    • 140 г (1)
  • размер

    • м (1)
  • размер экрана

    • 6,5 дюйма (1)

GET     /catalog/article/_search


{
  "hits": {
    "hits": [
      {
        "_score": 1,
        "_type": "article",
        "_id": "POczfGsBETE745IKleND",
        "_source": {
          "attributes": [
            {
              "key": "type",
              "value": "phone"
            },
            {
              "key": "weight",
              "value": "140gm"
            }
          ],
          "price": 123,
          "name": "galaxy note"
        },
        "_index": "catalog"
      },
      {
        "_score": 1,
        "_type": "article",
        "_id": "1gTQgGsBOIP8-uDJcAWg",
        "_source": {
          "attributes": [
            {
              "key": "type",
              "value": "clothing"
            },
            {
              "key": "size",
              "value": "m"
            }
          ],
          "price": 123,
          "name": "shirt"
        },
        "_index": "catalog"
      },
      {
        "_score": 1,
        "_type": "article",
        "_id": "Pef1kmsBETE745IKaeM1",
        "_source": {
          "attributes": [
            {
              "key": "type",
              "value": "phone"
            },
            {
              "key": "screen size",
              "value": "6.5 inch"
            }
          ],
          "price": 599,
          "name": "iphone x"
        },
        "_index": "catalog"
      }
    ],
    "total": {
      "relation": "eq",
      "value": 3
    },
    "max_score": 1
  },
  "_shards": {
    "successful": 1,
    "failed": 0,
    "skipped": 0,
    "total": 1
  },
  "took": 3,
  "timed_out": false
}
...