У меня есть запись в индексе эластичного поиска: -
"hits" : {
"total" : {
"value" : 1,
"relation" : "eq"
},
"max_score" : 0.0,
"hits" : [
{
"_index" : "index",
"_type" : "_doc",
"_id" : "C3wfF3kBVSP1PGuoao73",
"_score" : 0.0,
"_source" : {
"rId" : 1066,
“categoriesData" : [
{
"categoryNumber" : 13,
"depNumber : 98,
"storeIds" : [
"3",
"6"
],
"fData" : {
"Type" : “Single
}
},
{
"categoryNumber" : 12,
"depNumber" : 97,
"storeIds" : [
"3629",
"3628"
],
"Data" : {
"Type" : “DOUBLE
}
}
],
"sId" : "35EB8012-AA52-4872-A1A2-92522BD3925F"
}
}
]
}
Здесь categoryData вложены. Я пытаюсь запросить categoryNumber 13 и depNumber 98. Мне нужен только этот объект dict с categoryNumber 13 и depNumber 98.
This is my query:-
GET /index/_search
{
"query": {
"bool": {
"must": [
{
"nested": {
"path": "categoriesData",
"query": {
"bool": {
"must": [
{
"term": {
"categoriesData.categoryNumber": 13
}
},
{
"term": {
"categoriesData.depNumber": 98
}
}
]
}
}
}
}
]
}
}
}
При попытке выполнить вышеуказанный запрос он дает мне весь документ. Мое требование - получить только документы с depNumber и номером категории. Ожидаемый результат: - Только один объект из вложенного поля.
"categoriesData" : [
{
"categoryNumber" : 13,
"depNumber : 98,
"storeIds" : [
"3",
"6"
],
"fData" : {
"Type" : “Single
}
}
Мое отображение: -
{"mappings": {"properties":
{"rId": { "type": "integer"},
"sId": { "type": "keyword" },
"CategoriesData" : {"type":"nested","properties" :{"depnumber”: {"type":"integer"},"categoryNumber”: {"type":"integer"},"storeIds": {"type":"keyword"},"fData" : {"type":"object"}}}}}}
Есть ли способ написать запрос, чтобы получить только определенные объекты с совпадающими терминами