Сортировать запрос по длине поля в Elstic Search - PullRequest
0 голосов
/ 15 мая 2019

У меня есть поле в каждом из моих документов, вот так

'some_field': 3, 5, 10

Но у каждого документа может быть очень длинная цифра,

'some_field': 3, 5, 10        # Doc 1
'some_field': 5               # Doc 2
'some_field': 3, 5, 10, 20, 9 # Doc 3

Есть ли способ запроса и сортировки по длине, чтобы мои результаты были расположены так:

'some_field': 3, 5, 10, 20, 9 # Doc 3
'some_field': 3, 5, 10        # Doc 1
'some_field': 5               # Doc 2

Мой текущий запрос, сортировка по _id на данный момент

es_object.search(index='index', size=500, body={
            "sort": [
                {"_id": "desc"}
            ],
            "query": {

            "bool": {
                "must": [
                    {
                        "match_all": {}
                    },
                    {
                        "exists": {
                            "field": "some_field"
                        }
                    }
                ],
                "filter": [],
                "should": [],
                "must_not": []
            }
        }})

1 Ответ

1 голос
/ 17 мая 2019

Вы можете сделать скрипт сортировки

{
    "sort": {
        "_script": {
            "script": "doc['some_field'].value.length()",
            "type": "number",
            "order": "asc"
        }
    },
    "query": {

        "bool": {
            "must": [{
                    "match_all": {}
                },
                {
                    "exists": {
                        "field": "some_field"
                    }
                }
            ],
            "filter": [],
            "should": [],
            "must_not": []
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...