Вы можете использовать фильтр или определить размер в агрегатах, как
"aggs": {
"NAME": {
"filter": {
"term": {
"ATTRIBUTES.ATTR_TYPE": "EDUCATION_DEGREE"
}
},
"aggs": {
"NAME": {
"terms": {
"field": "ATTRIBUTES.DESCRIPTION",
"size": 100
}
}
}
}
}
}
}
Обычно пойдите с самой простой вещью, которая может возможно работать по крайней мере сначала. Рассмотрите, например, UNIX, где большинство конфигурационных файлов является только whitepace-разграниченными полями или полями, разграниченными с другим символом (как/etc/passwd, который использует ":" разделители, потому что поле GCOS может содержать пробелы.)
Если Вашим данным нужно намного больше структуры, то спросите себя, "какие инструменты я могу использовать легко?" Python и Ruby имеют JSON и YAML, например.
XML в основном полезен, если у Вас уже есть много основанного на XML материала, ИЛИ Вы ожидаете преобразовывать XML к визуализуемой форме в браузере. Иначе это обычно очень тяжело (размер кода, сложность) для того, что Вы получаете от него.
Неважно, который формат, который Вы выбираете, не забывает хранить некоторый номер версии внутри (я вполне уверен, что необходимо будет представить некоторые изменения).
Формат зависит в большой степени от приложения и объема данных. Для некоторых приложений XML является соответствующим, поскольку другие структуры фиксированного размера приложений, сохраненные в двоичном файле, хороши.
Я использую много различных форматов, в зависимости от ситуации, например:
Если у Вас нет уникальных требований, используйте что-то, для которого уже существует сформировавшаяся библиотека, таким образом, можно постараться не писать собственный код парсинга. Это означает, что XML/JSON, и т.д., как люди сказал.
Еще один хороший является буферами протокола Google (http://code.google.com/p/protobuf). Там Вы пишете общее определение сообщения, и буферный компилятор протокола генерирует объекты для того, чтобы заполнить, сериализировать и десериализовать данные для Вас. Обычно формат является двоичным, но можно использовать их класс записи TextFormat подобный JSON простой текст также. Хорошая вещь о protobufs состоит в том, что код управления версиями сгенерирован для Вас. В версии 2 Вашего формата файла все, что необходимо сделать, добавляют поля к .proto файлу определения. Новая версия может считать старый формат файла и просто оставляет новые незаполненные поля. Это не точно, для чего были разработаны protobufs, но они делают легкий, эффективный формат двоичного файла для пользовательских сообщений, и код сгенерирован для Вас.
Также посмотрите Экономию Facebook, теперь в инкубаторе Apache.
Поскольку годы прошли, я нашел меня все большим количеством текста одобрения, если это не просто вне рассмотрения. ЦП достаточно быстр теперь, когда мы можем декодировать его достаточно быстро.
Очевидно, когда необходимо часто обновлять маленькие кусочки информации в большом файле, это не опция - но который, скорее всего, описывает базу данных.
Это взяло бы необычную ситуацию в этой точке, чтобы заставить меня пойти с чем-то другим, чем одна из этих двух опций.
+1 для XML. Имеет немного служебное, но легкий проанализировать, читайте, и отладка. Может быть строгим, если Вы используете схему. Легкий преобразовать с XSLT, и очень портативный (в проводе или только в pendrive:)
Это действительно зависит от конкретной ситуации. Необходимо было бы рассмотреть возможности против ответов на различные вопросы:
Природа самих данных окажет влияние. Действительно ли это - плоская структура списка? Действительно ли это - дерево? Действительно ли это - циклический график? Записи фиксированных или переменных ширин?
После того как ответы на эти вопросы известны, можно выбрать среди опций, сохранив его максимально простым. Часто популярные опции (XML, CSV, YAML) удовлетворят Вашим целям. В противном случае затем необходимо будет разработать собственное форматирование и собственную запись и чтение процедур.
Существует столько возможностей, но самым прагматическим должен быть XML