Показать страницуИстория страницыСсылки сюдаCopy this pageExport to MarkdownODT преобразованиеНаверх Вы загрузили старую версию документа! Сохранив её, вы создадите новую текущую версию с этим содержимым. Медиафайлы{{tag>search indexer elasticsearch indexer}} ====== Mapping ====== <code bash> $ curl -XPUT 'http://localhost:9200/twitter/tweet/_mapping' -d '{ "tweet" : { "_source" : {"enabled" : false}, "properties" : { "user" : {"type" : "string", "index" : "not_analyzed"}, "message" : {"type" : "string", "null_value" : "na", "store": true}, "postDate" : {"type" : "date"}, "priority" : {"type" : "integer"}, "rank" : {"type" : "float", "index_name" : "rating"} } } }' </code> ===== Конфигурация / Config ===== ==== Базовые типы данных ==== <note tip>Примечание: По умолчанию **"_source" : {"enabled" : true}** и весь документ хранится в индексе в исходном состояние и возвращается по запросу. И это работает быстрее, чем хранить в индексе отдельные поля, при условии, что ваш документ не огромен. Тогда хранение только необходимых полей может дать профит. Поэтому я не рекомендую трогать это поле без веской на то причины.</note> * **"_source" : {"enabled" : false}** — Тем самым мы указали, что хранить исходные данные для этого типа не нужно. Когда это может понадобится? Например у вас есть очень тяжелый документ с кучей информации, которую нужно только индексировать, но не нужно выводить в ответе * **"store": true** для поля message говорит о том, что это исходник поля необходимо сохранять в индексе * **"index" : "not_analyzed"** — тут мы указали, что это поле не должно анализироваться, т.е. должно хранится как есть. Какие бывают анализаторы * **"null_value" : "na"** — дефолтное значение для поля * **"index_name" : "rating"** — тут мы указали алиас для поля. Теперь мы можем обращаться к нему как к «rank» так и к «rating» ==== Типы array/object/nested ==== === Nested(вложенный) type === Document \\ <code json> { "obj1" : [ { "name" : "blue", "count" : 4 }, { "name" : "green", "count" : 6 } ] } </code> Если мы будем искать **name = blue && count>5** то этот документ будет найден, что бы избежать такого сценария, стоит использовать nested тип. mappig \\ <code json> { "type1" : { "properties" : { "obj1" : { "type" : "nested", "properties": { "name" : {"type": "string", "index": "not_analyzed"}, "count" : {"type": "integer"} } } } } } </code> Для поиска по nested типу следует использовать [[http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-nested-query.html|nested query]] или [[http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-nested-filter.html|nested filter]].СохранитьПросмотрРазличияОтменить Сводка изменений Примечание: редактируя эту страницу, вы соглашаетесь на использование своего вклада на условиях следующей лицензии: CC0 1.0 Universal