Когда документ отправляется на индексацию, OpenSearch индексирует все поля в формате инвертированного индекса, но при этом сохраняет исходный JSON-документ в специальном поле, называемом _source.
Примеры
Отключение поля источника в индексе
1 2 3 4 5 6 7 8 | PUT /api-logs?pretty { "mappings": { "_source": { "enabled": false } } } |
Сохранять в составе поля _source только выбранные поля
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | PUT api-logs { "mappings": { "_source": { "includes": [ "*.count", "error_info.*" ], "excludes": [ "error_info.traceback_message" ] } } } |
Включение только выбранных полей с помощью фильтрации источников
1 2 3 4 5 6 7 8 9 | GET api-logs/_search { "query": { "match_all": {} }, "_source": { "includes": ["api_name","status_code", "*id"] } } |
Примечания
Поле источника создает накладные расходы на дополнительное место в хранилище, но служит для специальных целей, таких как:
- Возвращается как часть ответа при выполнении поискового запроса.
- Используется для целей переиндексации, операций обновления и update_by_query.
- Используется для подсветки, если поле не хранится, значит, оно не установлено в маппинге как "store в true".
- Позволяет выбирать возвращаемые поля.
Единственная проблема, связанная с исходным полем, - это дополнительное использование памяти на диске. Но это место, занимаемое исходным полем, можно оптимизировать, изменив уровень сжатия на best_compression. Эта настройка выполняется с помощью параметра index.codec.