Мне нужна быстрая помощь, мне нужно получить весь документ, только когда мои условия выполняются в том же массиве.
* ** 1003 тысяча два * Пример
Условия, когда в одном блоке массива выполняются все эти три условия. т.е.
- "profile.bud.buddies.code": "1"
- "profile.bud.buddies.moredata.key": "one"
- "profile.bud.buddies.moredata.val": "0"
К сожалению, сейчас он просматривает весь документ и пытается сопоставить значения в каждом из этих массивов, чтобы могло быть так, чтобы code = 1 совпадал в одном массиве, key = один в каком-то другом массиве и val = 0 в третьем массиве. Что происходит, в этом случае он возвращает мне весь документ, тогда как на самом деле это не было выполнено в одном массиве, поэтому не должен был возвращать мне документ.
Я сделал moredata как вложенный тип, но все еще не могу пройти. Пожалуйста, помогите.
Запрос, который я использую
</p>
<pre><code>"query": {
"bool": {
"should": [
{
"match": {
"profile.bud.buddies.code": "1"
}
}
]
},
"nested": {
"path": "profile.bud.buddies.moredata",
"query": {
"bool": {
"must": [
{
"match": {
"profile.bud.buddies.moredata.key": "one"
}
},
{
"match": {
"profile.bud.buddies.moredata.val": "0"
}
}
]
}
}
}
}
Структура документа
</p>
<pre><code>"profile": {
"x":{},
"y":{},
"a":{},
"b":{},
"bud":{
"buddies": [
{
"code":"1",
"moredata": [
{
"key": "one",
"val": 0,
"setup": "2323",
"data": "myid"
},
{
"key": "two",
"val": 1,
"setup": "23",
"data": "id"
}]
},
{
"code":"2",
"moredata": [
{
"key": "two",
"val": 0,
"setup": "2323",
"data": "myid"
},
{
"key": "three",
"val": 1,
"setup": "23",
"data": "id"
}]
}]
}
Вот как я пометил отображения;
</p>
<pre><code>"profile": {
"bug": {
"properties": {
"buddies": {
"properties": {
"moredata": {
"type": "nested",
"properties": {
"key": {"type": "string"},
"val": {"type": "string"}