Я используюasticsearch-6.4.3
Я создал индекс test_index со следующим отображением:
PUT test_index
{
"mappings": {
"_doc": {
"properties": {
"name": {
"type": "keyword"
},
"segments": {
"type": "nested",
"properties": {
"f1": {
"type": "keyword"
},
"f2": {
"type": "integer"
}
}
}
}
}
}
}
Я вставил документ в индекс с помощью следующей команды:
POST /test_index/_doc
{
"name": "ABC",
"segments": [{
"f1": "abc",
"f2": 123
},
{
"f1": "def",
"f2": 124
}]
}
У меня есть массив значений, скажем arr = ["def", "xyz"]
. Я хочу сопоставить все документы, по крайней мере один из которых f1 field in segments field
совпадает с любым из значений в данном массиве arr
.
Вы можете назвать его чем-то вроде array_intersect, чтобы его было легче понять.
Я пытаюсь что-то вроде этого:
GET /test_index/_search
{
"query": {
"nested": {
"path": "segments",
"query": {
"bool": {
"must": [
{
"terms": {
"f1": [
"def",
"xyz"
]
}
}
]
}
}
}
}
}
Я не получаю результатов в качестве вывода.
Expected output
: документ должен совпадать, так как «def» присутствует в качестве значения f1 в документе.