2016-02-16 2 views
0

У меня есть индекс по имени attachment_test и отображение ниже:Elasticsearch: тип полей отображения отличается от типа в результате запроса

enter image description here

Я индексируется его, как использовать данные JSon ниже:

{"goods_id": 67,"sold_num_day90": "25","created_at": "1455575376","current_day": "20160215","sold_num_day3": "0","sold_num_day30": "15","sold_num_day7": "0"} 

Я искал и получить результат: enter image description here

Эти данные являются surrounde d цитатой, кроме поля goods_id. Почему эти строки не преобразовывались автоматически?

спасибо.

ответ

0

Источник всегда будет возвращен точно так же, как вы ввели, т. Е. Источник никогда не преобразуется Elasticsearch.

Однако ES будет стремиться принуждать каждое поле этого документа к типу, настроенному в вашем сопоставлении, и что принудительное значение в конечном итоге будет проиндексировано в Lucene.

Если вы хотите, чтобы эти двойные кавычки исчезли, просто не заставляйте их отображаться в индексе, который вы указали.

+0

Вы имеете в виду, что котировки в Lucene отсутствуют в этих сценариях? Я пытаюсь индексировать использование данных в файлах HDFS. Эти данные могут быть любого типа. –

+0

Кавычки - это просто способ JSON, чтобы обозначить, что вы указали строковое значение в своем документе. ES примет это строковое значение (например, «1455575376») и приложит все усилия, чтобы принудить это строковое значение к типу, который вы указали в своем сопоставлении (например, 'long'). Если это будет хорошо, Lucene будет индексировать длинное значение, иначе ES жалуется и выдает исключение. Итак, то, что вы видите в своем источнике JSON и то, что в конечном итоге индексировано в Lucene **, может быть ** различным. Лучшая практика заключается в том, чтобы всегда создавать JSON с теми же типами, которые вы декларируете в своем сопоставлении (т. Е. В вашем случае нет кавычек вокруг длинных номеров). – Val

Смежные вопросы