Я новичок в Elasticsearch, поэтому, пожалуйста, будьте со мной и дайте мне знать, если мне нужно предоставить какую-либо дополнительную информацию. Я унаследовал проект, и мне нужно реализовать новую функцию поиска. Структура документа/сопоставления уже существует, но ее можно изменить, если она не может облегчить то, что я пытаюсь достичь. Я использую Elasticsearch версии 5.6.16.
Компания может предложить ряд услуг. Каждое предложение услуг сгруппировано в набор. Каждый набор состоит из 3-х категорий;
- Товар(ы) (ID 1)
- Процесс(ы) (ID 3)
- Материал(ы) (ИД 4)
Структура документа выглядит следующим образом;
[{
"id": 4485,
"name": "Company A",
// ...
"services": {
"595": {
"1": [
95, 97, 91
],
"3": [
475, 476, 471
],
"4": [
644, 645, 683
]
},
"596": {
"1": [
91, 89, 76
],
"3": [
476, 476, 301
],
"4": [
644, 647, 555
]
},
"597": {
"1": [
92, 93, 89
],
"3": [
473, 472, 576
],
"4": [
641, 645, 454
]
},
}
}]
В приведенном выше примере; 595, 596 и 597 — это идентификаторы, относящиеся к набору. 1, 3 и 4 относятся к категориям (упомянутым выше).
Отображение выглядит так;
[{
"id": {
"type": "long"
},
"name": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"services": {
"properties": {
// ...
"595": {
"properties": {
"1": {"type": "long"},
"3": {"type": "long"},
"4": {"type": "long"}
}
},
"596": {
"properties": {
"1": {"type": "long"},
"3": {"type": "long"},
"4": {"type": "long"}
}
},
// ...
}
},
}]
При поиске компании, которая предоставляет продукт (ID 1) — поиск 91 и 95, который вернет компанию A, поскольку эти идентификаторы находятся в одном наборе. Но если бы я искал 95 и 76, это не вернуло бы компанию А - хотя компания производит оба этих продукта, они не входят в один и тот же набор. Эти же правила будут применяться при поиске процессов и материалов или их комбинации.
Я ищу подтверждение того, что текущая структура документа/сопоставления облегчит этот тип поиска.
- Если да, то с учетом 3 массивов идентификаторов (продукты, процессы и материалы), каков JSON для поиска всех компаний, которые предоставляют эти услуги в одном и том же наборе?
- Если нет, то как следует изменить документ/отображение, чтобы разрешить этот поиск?
Спасибо за помощь.