2016-03-18 1 views
0

Мне сказали, что «у каждого типа есть собственное отображение или определение схемы» на the official guide.Отображение поля elasticsearch влияет на разные типы acors в одном и том же индексе

Но тот факт, что я встретил это отображение, может влиять на другие типы в пределах одного индекса. Вот ситуация: определение

Mapping:

[[email protected] agent]# curl localhost:9200/agent*/_mapping?pretty 
{ 
    "agent_data" : { 
    "mappings" : { 
     "host" : { 
     "_all" : { 
      "enabled" : false 
     }, 
     "properties" : { 
      "ip" : { 
      "type" : "ip" 
      }, 
      "node" : { 
      "type" : "string", 
      "index" : "not_analyzed" 
      } 
     } 
     }, 
     "vul" : { 
     "_all" : { 
      "enabled" : false 
     } 
     } 
    } 
    } 
} 

, а затем я индексировать запись:

[[email protected] agent]# curl -XPOST 'http://localhost:9200/agent_data/vul?pretty' -d '{"ip": "1.1.1.1"}' 
{ 
    "error" : { 
    "root_cause" : [ { 
     "type" : "mapper_parsing_exception", 
     "reason" : "failed to parse [ip]" 
    } ], 
    "type" : "mapper_parsing_exception", 
    "reason" : "failed to parse [ip]", 
    "caused_by" : { 
     "type" : "number_format_exception", 
     "reason" : "For input string: \"1.1.1.1\"" 
    } 
    }, 
    "status" : 400 
} 

Кажется, что он пытается разобрать внутрибрюшинно как число. Поэтому я ставлю ряд в этой области:

[[email protected] agent]# curl -XPOST 'http://localhost:9200/agent_data/vul?pretty' -d '{"ip": "1123"}' 
{ 
    "error" : { 
    "root_cause" : [ { 
     "type" : "remote_transport_exception", 
     "reason" : "[Argus][127.0.0.1:9300][indices:data/write/index[p]]" 
    } ], 
    "type" : "illegal_argument_exception", 
    "reason" : "mapper [ip] cannot be changed from type [ip] to [long]" 
    }, 
    "status" : 400 
} 

Эта проблема уходит, если я явно определить IP-поле типа М. Вул как внутрибрюшинно поля типа.

Я не совсем понимаю поведение выше. Я что-то пропустил?

Заранее спасибо.

ответ

1

Заявление

Каждый тип имеет свое собственное отображение, или определение схемы

верно. Но это не полная информация. В одном индексе могут быть конфликты между разными типами с одним и тем же полем.

Mapping - field conflicts

типы картирования используются для группирования полей, но поля в каждом типа отображения не являются независимыми друг от друга. Поля с:

  • то же самое имя
  • в том же индексе
  • в различных типов отображения

карты в том же поле внутренне, и должны иметь одинаковое отображение. Если поле title существует как в типах отображения user, так и blogpost, поля title должны иметь точно такое же сопоставление в каждом типе. Только исключения из этого правила являются copy_to, dynamic, enabled, ignore_above, include_in_all и properties параметры, которые могут имеют различные параметры в поле зрения.