Отображение ассоциативного массива в Elasticsearch
Я относительно новичок в elasticsearch, и я хотел бы сопоставить одно из моих полей с associative array
структура.
что у меня в настоящее время есть:
один продукт типа product
индекс products
:
{
"name":"Nexus 10",
"category":"Tablets",
"interests": {
"1":30,
"3":70
}
}
Как видите, поле interests
- это ассоциативный массив. Ключ-это User ID
и значение the number of times the user talked about this product
.
динамическое отображение предоставило мне :
{
"products":{
"mappings":{
"product":{
"properties":{
"category":{
"type":"string"
},
"interests":{
"properties":{
"1":{
"type":"long"
},
"3":{
"type":"long"
},
}
},
"name":{
"type":"string"
}
}
}
}
}
}
чего я хочу :
так как у меня будет много записей в interests
поле, я не хочу, чтобы динамические сопоставления каждого ID.
идея в том, чтобы иметь возможность искать конкретные user ID
на interests
поле, чтобы я мог увеличить счет результата в зависимости от количества раз, когда этот конкретный пользователь говорил об этом продукте.
Я хотел бы иметь возможность отображать такую структуру.
у вас есть идея, как достичь это?
спасибо,
1 ответов
вам нужно будет изменить определения объектов.
С ключи на основе того, что на самом деле значения проблематично, так как это приведет к постоянно растущему отображению и, следовательно, состоянию кластера. Это также приведет к странным поискам.
Это достаточно распространенный вопрос / проблема, что я посвятил этому раздел в своей статье на Устранение неполадок поиск Elasticsearch, для начинающих.
что вы, вероятно, хотите сделать, это использовать вложенные документы или отношения "родитель-потомок". Если вы обновляете счетчики очень часто, вы хотите использовать parent-child, так как вложенные документы вызовут переиндексацию всего. Вложенный doc будет быстрее время поиска, хотя, и вы, скорее всего, захотите как-то дросселировать обновления.
Если вы структурируете документы таким образом, вы можете легко использовать вложенные сопоставления, и у вас не будет одного поля для каждого пользователя.
name: Nexus 10
category: Tablets
interests:
- user_id: 1
mentions: 30
- user_id: 3
mentions: 70