К сожалению, пока нет способа хранить ссылки на проиндексированные фигуры.Что вы можете сделать, это предварительно проиндексировать фигуры в выделенном индексе, а затем сохранить идентификаторы этих фигур в массиве местоположений в индексе профилей, например:
PUT shapes/doc/LOC1
{
... shape definition goes here ...
}
PUT shapes/doc/LOC2
{
... shape definition goes here ...
}
PUT profiles/doc/1
{
"locations": [ "LOC1", "LOC2" ]
... other fields
}
Затем, когда вам нужно выполнить запросВы можете сначала выполнить запрос по индексу фигур, собрать идентификаторы соответствующих фигур, а затем запросить индекс профилей, используя эти идентификаторы.Я не вижу способа сделать его короче.
Сначала запросите фигуры и соберите идентификаторы:
POST shapes/_search?filter_path=hits.hits._id
{
"query" : {
"geo_shape": {
"location": {
"shape": {
"type": "envelope",
"coordinates" : [[13.0, 53.0], [14.0, 52.0]]
},
"relation": "within"
}
}
}
}
=> returns "LOC1", "LOC3", "LOC4"
Наконец, запросите индекс профилей
POST profiles/_search
{
"query": {
"bool": {
"filter": [
{
...other profile criteria go here...
},
{
"terms": {
"locations": ["LOC1", "LOC3", "LOC4" ]
}
}
]
}
}
}