2013-03-15 5 views
4

Я хочу сделать статистический аспект на одном из моих массивов. Я надеюсь, что-то вродеКак получить счет/размер массива в elasticsearch

"script" : "doc['myField'].doubleValue 

или

"script" : "doc['myField'].count 

будет работать. Я не нашел метод подсчета массива в mvel, и я даже не знаю, действительно ли доступ к полю массива в скрипте дает мне массив.

+0

Посмотрите здесь: http://stackoverflow.com/questions/12733351/how-do-i-sort-the-search-results-according-to-the-number-of-items-in -elasticsear/12734613 # 12734613 – javanna

ответ

5

Возможно, у меня есть. Кажется, мне нужно подсчитать поле внутри массива вместо самого массива. Это может быть просто потому, что у меня есть массивы объектов.

"script" : "doc['arrayField.objectField'].values.length" 
+0

Ха, я сделал это, и он полностью убил мой кластер. Возможно, есть способ сделать это с лучшей производительностью. – Alden

+0

Он убил ваш кластер, потому что он загружал все значения этого поля в память, а до версии 0.90 elasticsearch использовал довольно неэффективную структуру, чтобы сохранять значения для многозначных полей в памяти. Итак, у вас есть несколько вариантов: обновить до 0.90.0.Beta1, использовать _fields вместо doc, если это поле хранится или индексировать длину массива в качестве другого поля. Последнее решение, на мой взгляд, лучшее. – imotov