2016-01-23 3 views
0

Мне нужно поле, здесь score, чтобы быть числом и другими строками. Нравится:Как создать поле, имеющее различный тип в Elastic Search

{ 
    "name": "Joe" 
    "score": 32.5 
} 

{ 
    "name": "Sue" 
    "score": "NOT_AVAILABLE" 
} 

Как это выразить в этом в настройках индекса в Elastic Search?

В основном я хочу, чтобы «динамическая печать» на поле. Код может не иметь смысла для вас (например: почему бы не разделить его на 2 разных поля), но это необходимо для меня в конце (по соображениям последовательности).

Мне не нужно/нужно, чтобы свойство было проиндексировано/«доступно для поиска». Мне просто нужны данные для ответа json. Мне нужно что-то вроде «любой объект подойдет здесь».

ответ

2

Наконец-то выяснилось. Все, что мне нужно было сделать, - установить enabled на false, и поиск по эластичности не будет пытаться что-либо сделать с данными - но он все еще присутствует в ответе json.

Как так:

"score": { 
     "enabled": false 
    } 
0

Просто укажите "score" поле типа «строка» в вашем отображении. Вот и все. Убедитесь, что вы действительно определяете сопоставление, прежде чем индексировать какой-либо документ. В противном случае, если вы позволите создать сопоставление динамически, а тип значения "score" - это ничего, кроме строки в первом индексе, который вы индексируете, вы не сможете индексировать следующий документ, в котором "score" содержит строку.

+0

Но я хочу 'score' быть рядом тоже (в других документах). В этом проблема: это не всегда строка - тип варьируется от документа к документу – kornfridge