2015-02-07 3 views
1

Я знаю, что с полем _size мы можем сказать Elasticsearch, чтобы сохранить размер документа. Это отображение, которое я определил для моего индекса:Elasticsearch доступ к размеру определенного поля в документах

'{ 
    "mappings":{ 
     "_default_":{ 
     "_size":{ 
      "enabled":true, 
      "store":true 
     } 
     } 
    } 
}' 

_size поле дает размер всего документа, где, как я хочу размер только определенное поля.

Например, предположим, что в отображении имеется два поля. message и url. т.е.

curl -XPUT localhost:9200/indexname/tweet/00001 -d '{"message": "some message", "url" : "http://someurl.url"}' 

Можно ли получить длину (или размер магазина) только сообщений в приведенном выше отображении?

ответ

3

Вы можете сделать это не с помощью script fields

{ 
    { 
    "query" : { 
     ... 
    }, 
    "script_fields" : { 
     "message_length" : { 
      "script" : "doc['message'].value.size()" 
     } 
    } 
} 
+0

такого свойства: длина для класса: java.lang.String. Должен ли я писать скрипт, чтобы получить длину? Если да, то как? – CentAu

+0

Возможно, ES не позволит вам это понять. Я сделал еще одно редактирование, которое могло бы сделать трюк. Попробуйте с длиной и длиной() –

+0

length() не работает. Это был размер(). – CentAu

Смежные вопросы