2016-05-09 4 views
3

У меня есть индекс, основанный на Продуктах, и одно из полей, объявленных в сопоставлении, является атрибутами. Это поле является вложенным типом, так как оно будет содержать два значения - ключ и значение. Проблема заключается в том, что в зависимости от контекста атрибута тип данных может варьироваться между целым числом и строкой.Агрегирование вложенных полей различных типов данных в Elasticsearch

Например:

{"attributes":[{"key":"StrEx","value":"Red"},{"key":"IntEx","value":2}]} 

кажется тип данных для каждого экземпляра «ценности» в рамках всех будущих вложенных документов в атрибутах определяется на основе первых введенных данных. Мне нужно сохранить его как целочисленный/длинный тип данных, чтобы я мог выполнять запросы диапазона.

Любая помощь или альтернативные идеи были бы весьма признательны.

ответ

2

Вам необходимо отображение как этот, для value поля:

"value": { 
     "type": "string", 
     "fields": { 
     "as_number": { 
      "type": "integer", 
      "ignore_malformed": true 
     } 
     } 
    } 

В принципе, ваше поле stringно с помощью fields вы можете попытаться отформатировать его в числовом поле.

Если вы хотите использовать запросы range, используйте value.as_number, для чего-нибудь еще используйте value.

+0

Вы, сэр, прекрасный мужчина! Огромное спасибо. – Spencaroo