2016-10-04 1 views
0

Я новичок в ES, и мой первый проект на ES имеет некоторое усложнение. Так что приходите с просьбой о помощи.Эластичная поисковая индексация/сопоставление на сложной типизированной схеме

Мы получили широкую вариабельность продуктов, которые разные виды продуктов имеют разные атрибуты, которые нам интересны. Например, для смартфонов мы заботимся о RAM, CPU и т. Д. Для книг мы заботимся об авторе, версии и т. Д. Чтобы разместить их в одном хранилище данных, схема хранения выглядит так:

ProductID: Int, Attribute_Key, ATTRIBUTE_NAME: String, ATTRIBUTE_VALUE: String

Так что для смартфона и книги, записи могут выглядеть следующим образом:

phoneId, 3, "CPU Speed", "2GHz" 
phoneId, 4, "RAM", "2GB" 
bookId, 83, "Author", "Mark Twin" 
bookId, 95, "Published", "1935" 

на данный момент у меня есть около 50 имен атрибутов, это не много. Я хочу проиндексировать их все. В отличие от обычного механизма индексирования/отображения в ES, вы можете напрямую назначить, с какой колонкой вы хотите индексировать. Для этого типа схемы, как я должен указывать ES для индексации всех возможных имен атрибутов? Так как у меня их около 50?

Например, я хочу индексировать по ОЗУ, автор, опубликованный. Это похоже на многополюсное индексирование, но у меня нет опыта в этом. Любая помощь приветствуется.

Thanks,

+0

какая версия эластичного поиска вы планируете использовать? –

+0

, вы можете взглянуть на это http://stackoverflow.com/a/13627218/1849366 –

+0

Версия эластичного поиска - 2.1.2. –

ответ

0

Использовать ниже отображения. Это будет индексировать только ОЗУ, автора и публикации.

"person" : { 
    "properties" : { 
     "CPU_Speed" : { 
      "type" : "string", 
      "include_in_all" : false 
     }, 
     "RAM" : { 
      "type" : "string" 
     }, 
     "Author" : { 
      "type" : "string" 
     }, 
     "Published" : { 
      "type" : "string" 
     } 
    } 
} 
+0

Спасибо Vinod, похоже, мне нужно добавить все 40 имен атрибутов, и он не защищает будущие имена атрибутов. Думать о двух комбинированных индексах полей имеет больше смысла. Но не знаю, как это сделать ... –

+0

@ShiChen я не получил ваш комментарий «Думая о двух комбинированных индексах, имеет смысл». Не могли бы вы объяснить это ненадолго. –