Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
system:elasticsearch:mapping [2018/01/29 10:26] – [Конфигурация / Config] mirocowsystem:elasticsearch:mapping [2018/01/29 10:47] (текущий) – [Nested(вложенный) type] mirocow
Строка 30: Строка 30:
  
 ==== Типы array/object/nested ==== ==== Типы array/object/nested ====
 +
 +=== Nested(вложенный) type ===
 +
 +Подробнее о типе можно узнать из документации [[https://www.elastic.co/guide/en/elasticsearch/reference/5.6/nested.html|Nested datatype]]
 +
 +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]].
 +
 +=== Multi-fields ===
 +
 +Этот параметр позволяет указать разные настройки маппинга для одного поля. Добавлен ко все базовым типам (кроме nested и object).
 +
 +<code json>
 +"title": {
 +    "type": "string",
 +    "fields": {
 +        "raw":   { "type": "string", "index": "not_analyzed" }
 +    }
 +}
 +</code>
 +
 +Если отключить анализатор, поиск будет работать не на полную катушку, а если включить, то группировать мы будем не по сырым данным, а по обработанным. Например, Санкт-Петербург после анализатора будет «Санкт» и «Петербург».
 +Теперь мы можем обращаться к «title» за поиском и к «raw» за группировкой и любыми другими видами сортировки.
 +
 +=== Остальные типы ===
 +
 +  * [[http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-ip-type.html|ip type]] — хранение ip в виде цифр
 +  * [[http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-geo-point-type.html|geo point type]] — хранение координат (удобно при поиске ближайших объектов к определённой координате)
 +  * [[http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-geo-shape-type.html|geo point type]] — довольно специфичный тип для хранение определённых полигонов
 +  * [[http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-attachment-type.html|attachment type]] — Хранение файлов в базе закодированных в base64. Обычно используется с связке с собственным анализатором. (Хотя как по мне, удовольствие сомнительное)
 +