Поскольку вы используете ограничивающие прямоугольные координаты слов над изображением, я бы предложил вам использовать shape datatype, так как нет ограничения значений координат.
"vertices": {
"type": "shape"
}
Также сделайте Обязательно управляйте координатами ограничивающего прямоугольника в следующем формате.
[[x1,y1],[x2,y2],[x3,y3],[x4,y4],[x1,y1]]
Возможно, вы захотите изменить схему вasticsearch, так как вам будет проще искать различные поля в документе.
Публикация данных в документе, например:
POST /example/_doc
{
"vertices" : {
"type" : "polygon",
"coordinates" : [
[ [1000.0, -1001.0], [1001.0, -1001.0], [1001.0, -1000.0], [1000.0, -1000.0], [1000.0, -1001.0] ]
]
}
}
Для поиска вы можете использовать запрос типа envelope , чтобы вам не пришлось записывать все координаты ограничительной рамки, вы можете установить конверт (прямоугольник) для поиска, и он даст вам все документы, которые содержатся в конверте. Примечание: ввод координат для поиска типа конверта в несколько ином формате занимает [[minX,maxY],[maxX,minY]]
этот тип формата.
Пример:
{
"query":{
"bool": {
"must": {
"match_all": {}
},
"filter": {
"shape": {
"prefix.vertices": {
"shape": {
"type": "envelope",
"coordinates": [
[40,60],
[100,40]
]
}
}
}
}
}
}
}
Поскольку каждое поле вasticsearch может иметь одно или несколько значений ( в форме значений массива, поиск bgColor можно выполнить с помощью запроса с обязательным соответствием для сопоставления всех значений с элементами bgColor.
Пример:
{
"query": {
"bool": {
"must": [
{"match": {"prefix.wordInfo.bgColor": 1}},
{"match": {"prefix.wordInfo.bgColor": 2}},
{"match": {"prefix.wordInfo.bgColor": 3}}
]
}
}
}
Надеюсь, это поможет.