Нахождение максимального балла среди элементов массива в Elasticsearch, а не суммы

#elasticsearch

Вопрос:

Я ищу в свойстве массива в эластичном индексе. В документе есть два элемента массива, соответствующих запросу. Таким образом, итоговая оценка документа такова 1.2038873 = 0.6019437 0.6019437 . Это разумное поведение для некоторых случаев, но не для моего.

Есть ли возможность найти максимальное значение среди суббаллов, а не их сумму?

Таким образом , мне нужно значение 0.6 , оставаясь в диапазоне 0..1 . Существует обходной путь — вложенный запрос, — но введение этой сложности по такой незначительной причине выглядит для меня странным: нет большой разницы, кстати sum , и max для реализации на стороне ES.

 DELETE http://localhost:9200/arrays

PUT http://localhost:9200/arrays
{
    "mappings": {
        "properties": {
            "name": {
                "type": "keyword"
            }
        }
    },
    "settings": {}
}

POST http://localhost:9200/arrays/_doc/1
{"name": ["john1", "john2"]}

POST http://localhost:9200/arrays/_doc/2
{"name": ["mary"]}

POST http://localhost:9200/arrays/_search?pretty=trueamp;explain=true
{
    "query": {
        "function_score": {
            "query": {
                "fuzzy": {
                    "name": {
                        "value": "john",
                        "fuzziness": "AUTO",
                        "prefix_length": 2
                    }}}}}}
 

Полное объяснение: https://gist.github.com/zencd/61d7dc1c63bbb1734dbb12ab2a4c9f62