Próbuję wysłać zapytanie do zagnieżdżonych właściwości z wieloma wartościami.Wyszukaj zagnieżdżone pole dla wielu wartości w tym samym polu za pomocą elasticsearch
Oto przykład, który będzie bardziej przejrzysty.
Tworzenie indeksu z zagnieżdżonego pola
curl -X DELETE "http://localhost:9200/testing_nested_query/"
curl -X POST "http://localhost:9200/testing_nested_query/" -d '{
"mappings": {
"class": {
properties: {
title: {"type": "string"},
"students": {
"type": "nested",
"properties": {
"name": {"type": "string"}
}
}
}
}
}
}'
Dodaj niektóre wartości
curl -XPUT 'http://localhost:9200/testing_nested_query/class/1' -d '{
"title": "class1",
"students": [{"name": "john"},{"name": "jack"},{"name": "jim"}]
}'
curl -XPUT 'http://localhost:9200/testing_nested_query/class/2' -d '{
"title": "class2",
"students": [{"name": "john"},{"name": "chris"},{"name": "alex"}]
}'
Query dla wszystkich klas, gdzie John (2 hity jak oczekiwano)
curl -XGET 'http://localhost:9200/testing_nested_query/class/_search' -d '{
"query": {
"nested": {
"path":"students",
"query": {
"bool": {
"must": [
{"match": {"students.name": "john"}}
]
}
}
}
}
}'
zapytań dla klas, w których zarówno John i Jack są uczestniczę (0 wyniki zamiast 1)
curl -XGET 'http://localhost:9200/testing_nested_query/class/_search' -d '{
"query": {
"nested": {
"path":"students",
"query": {
"bool": {
"must": [
{"match": {"students.name": "john"}},
{"match": {"students.name": "jack"}}
]
}
}
}
}
}'
Próbowałem z meczu i filtrem, ale nigdy nie może dostać zapytanie do powrotu oczekiwanych wartości.
Kwerenda będzie działać po prostu używając "powinien" zamiast "musi". – plmaheu
Nie, z "should" Zwraca dwa trafienia zamiast jednego. –
Masz rację, źle odczytałem pytanie. – plmaheu