Мне нужно хранить данные, которые могут быть представлены в формате JSON следующим образом:Эластичные поиска: Моделирование данных, содержащих переменные поля
Article{
Id: 1,
Category: History,
Title: War stories,
//Comments could be pretty long and also be changed frequently
Comments: "Nice narration, Reminds me of the difficult Times, Tough Decisions"
Tags: "truth, reality, history", //Might change frequently
UserSpecifiedNotes:[
//The array may contain different users for different articles
{
userid: 20,
note: "Good for work"
},
{
userid: 22,
note: "Homework is due for work"
}
]
}
После того, как прошли через различные статьи, денормализация данных является одним из способов справиться с этим данные. Но поскольку общие поля могут быть довольно длинными и даже часто меняться, я бы не хотел их повторять. Какими могут быть другие способы улучшения представления и поиска этих данных? Родитель-ребенок? Внутренний объект?
В настоящее время я бы имел дело со множеством вставок, обновлений и нескольких поисков. Но всякий раз, когда поиск должен быть выполнен, он должен быть очень быстрым. Я использую NEST (.net client) для использования эластичного поиска. Поисковый запрос будет использоваться, как ожидается, работать следующим образом:
- Вход:
searchString
иuserID
- Поведение: Статьи, содержащие
searchString
в или Название, комментарии, теги или записки для данногоuserID
рода в порядок соответствия
Извините, я могу быть очень наивным, но что вы точно подразумеваете под 4 индексами? Предлагаете ли вы основную статью в качестве родителя, имеющего 3 типа детей: комментарий, тег, заметки. И может быть несколько экземпляров каждого типа детей? – labyrinth
Точно. Основная статья как родительская, а три другие - как дочерние. Каждая статья может иметь ноль или более детей каждого типа. Вы можете построить запрос, например, дать мне все статьи, в которых заголовок имеет Java, и содержит комментарий, содержащий j2ee и имеющий заметку от user1. –