Mapping

$ 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"} } } }'

Конфигурация / Config

Примечание: По умолчанию "_source" : {"enabled" : true} и весь документ хранится в индексе в исходном состояние и возвращается по запросу. И это работает быстрее, чем хранить в индексе отдельные поля, при условии, что ваш документ не огромен. Тогда хранение только необходимых полей может дать профит. Поэтому я не рекомендую трогать это поле без веской на то причины.

"_source" : {"enabled" : false} — Тем самым мы указали, что хранить исходные данные для этого типа не нужно. Когда это может понадобится? Например у вас есть очень тяжелый документ с кучей информации, которую нужно только индексировать, но не нужно выводить в ответе

"store": true для поля message говорит о том, что это исходник поля необходимо сохранять в индексе

"index" : "not_analyzed" — тут мы указали, что это поле не должно анализироваться, т.е. должно хранится как есть. Какие бывают анализаторы

"null_value" : "na" — дефолтное значение для поля

"index_name" : "rating" — тут мы указали алиас для поля. Теперь мы можем обращаться к нему как к «rank» так и к «rating»