ElasticSearch, поиск максимального идентификатора из актива - PullRequest
0 голосов
/ 03 февраля 2020

У меня проблема с поиском максимального значения из актива. Моя проблема состоит в том, чтобы найти максимальное значение ImageId.

{
    "_index": "b885a88d-7f55-5841-8166-77c948cff307",
    "_type": "_doc",
    "_id": "0a714077-83c0-4d5f-a1d5-88b3f3689b34",
    "_version": 2,
    "_seq_no": 5443,
    "_primary_term": 1,
    "found": true,
    "_source": {
        "created": "2020-01-31T15:01",
        "assetId": "0a714077-83c0-4d5f-a1d5-88b8f3689b34",
        "properties": [
            {
                "uuid": "e2f9e990-aa6e-4122-87fb-1b98307d7d58",
                "name": "imageId",
                "namespace": "file.Jpeg",
                "value": "123456"
            },
            {
                "uuid": "bc506442-90a6-41fc-a36b-2970f202988d",
                "name": "tmpName",
                "namespace": "file.Jpeg",
                "value": "/tmp/phpQIqVPk"
            },
            {
                "uuid": "6b3a2624-adf3-449b-a6c9-883396f98538",
                "name": "type",
                "namespace": "file.Jpeg",
                "value": "image/jpeg"
            },
            {
                "uuid": "3cf1be43-d0e8-4bb1-8c16-6f05a99d55f6",
                "name": "size",
                "namespace": "file.Jpeg",
                "value": "6605"
            },
        ],
        "asset_child_references": [],
        "asset_parent_references": []
    }
}

Я пробовал это :

{"query":{"match":{"properties.name":"imageId"}},
"sort": [
    {
      "properties.value": {
        "order": "desc"
      }
    }
  ],
   "size": 1
}

, но он проверяет каждый параметр значения. Как я могу проверить только параметр значения из imageId?

Спасибо за помощь.

1 Ответ

0 голосов
/ 07 февраля 2020

Я нашел решение. Массив в Elasticsearch должен быть вложенным.

Я нашел это на Elsaticsearch:

Массивы объектов не работают так, как вы ожидаете: вы не можете запрашивать каждый объект независимо от других объектов в массив. Если вам нужно это сделать, вам следует использовать вложенный тип данных вместо типа данных объекта.

Теперь я вложил свои данные.

    {
        "mappings": {
            "properties": {
                "properties": {
                    "type": "nested" 
                }
            }
        }
    }

Я надеюсь, что это поможет другой пользователь: -)

...