Tôi đang cố gắng truy vấn thuộc tính lồng nhau với nhiều giá trị.Tìm kiếm trường lồng nhau cho nhiều giá trị trên cùng một trường với elasticsearch
Dưới đây là ví dụ sẽ rõ ràng hơn.
Tạo một chỉ mục với một lĩnh vực lồng nhau
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"}
}
}
}
}
}
}'
Thêm một số giá trị
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 cho tất cả các lớp học nơi john là (2 hit như mong đợi)
curl -XGET 'http://localhost:9200/testing_nested_query/class/_search' -d '{
"query": {
"nested": {
"path":"students",
"query": {
"bool": {
"must": [
{"match": {"students.name": "john"}}
]
}
}
}
}
}'
Query cho các lớp học mà cả hai john và jack đang theo học (0 kết quả thay vì 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"}}
]
}
}
}
}
}'
Tôi đã thử với trận đấu và lọc nhưng tôi không bao giờ có thể nhận được các truy vấn để trả lại giá trị mong đợi.
Truy vấn sẽ làm việc chỉ đơn giản bằng cách sử dụng "nên" thay vì "phải". – plmaheu
Không, với "nên" Nó trả về 2 lần truy cập thay vì một lần truy cập. –
Bạn nói đúng, tôi đã đọc sai câu hỏi. – plmaheu