У меня возникает следующая проблема при индексировании документов в elasticsearch, мои документы содержат некоторые поля, которые не повторяются в других документах, поэтому я заканчиваю отображение более 100 000 элементов. Давайте посмотрим пример:Избегайте отображения нескольких полей в упругом поиске
Если я отправить что-то вроде этого в пустой индекс:
{"example":{
"a1":123,
"a2":444,
"a3":52566,
"a4":7,
.....
"aN":11
}
}
Это создаст следующее отображение:
{"example" : {
"properties" : {
"a1" : {
"type" : "long"
},
"a2" : {
"type" : "long"
},
"a3" : {
"type" : "long"
},
"a4" : {
"type" : "long"
},
.....
"aN" : {
"type" : "long"
}
}
}
}
Тогда, если я посылаю еще один документ:
{"example":{
"b1":123,
"b2":444,
"b3":52566,
"b4":7,
.....
"bN":11
}
}
Он будет создавать двойное сопоставление, как показано выше. Объект более сложный, чем этот, но ситуация, с которой я сейчас сталкиваюсь, заключается в том, что отображение является таким большим, что убивает сервер. Как я могу обратиться к этому вопросу? является мультифиллом, работающим в этом сценарии? Я пробовал несколько способов, но он, похоже, не работает.
Спасибо.
Для начала, мое первое ощущение, что если два документа не имеют одинаковые ключи (или большой их подмножество), они не относятся к одному типу (например, «пример») в первую очередь. Вы также можете проверить [этот ответ] (http://stackoverflow.com/questions/21911162/too-many-fields-bad-for-elasticsearch-index). Как сказал Алекс Брасетвик, проблема состоит не в том, чтобы иметь слишком много полей, но не для того, чтобы не контролировать ваше отображение и позволить ему расти неограниченно, возможно, есть некоторые мысли, которые нужно сделать для вашего сопоставления. – Val