Настройка индекса ElasticSearch из Java для использования гео-запроса - PullRequest
0 голосов
/ 26 марта 2019

Я хочу создать индекс в ElasticSearch с настройкой.Я хочу использовать запрос географического расстояния вasticSearch -> https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-geo-distance-query.html

У меня есть класс Java, и я использую объект GeoPoint, который есть у ElasticSearch и который принадлежит: org.elasticsearch.common.geo.GeoPoint;

@Data
@EqualsAndHashCode(callSuper = false)
public class GeofenceDocument extends AbstractBaseDocument {

    @Id

    private Double radius;
    private GeoPoint location;
    private String geofenceName;
    private Set<String> pushIds;

}

Я вставляю этот класс точно так, как он использует мой java IndexRequest.Я смотрю из kibana и вижу результат моего местоположения как

      "location": {
        "properties": {
          "geohash": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          },
          "lat": {
            "type": "float"
          },
          "lon": {
            "type": "float"
          }
        }
      },

Я не хочу "type": "ключевое слово", я хочу "type": "geo_point", чтобы ElasticSearch мог запрашивать в пределах заданной широты и долготы.

Я не хочу этого, потому что для использования гео-запроса мне нужно настроить так:

В нижеприведенной настройке я сделал это вручную из kibana

PUT myindex
{
    "mappings": {
        "_doc": {
            "properties": {
                "location": {
                "type": "geo_point"
                        }
                    }


        }
    }
}

Когда я настраиваюсь таким образом, и если я проверяю этот индекс

"mappings": {
  "_doc": {
    "properties": {
      "location": {
        "type": "geo_point"
      }
    }
  }
},

Итак, я сделал это, я настроил его вручную и попытался вставить мои классы Java, это выдает мне ошибку:

[type=illegal_argument_exception, reason=[location] is defined as an object in mapping [geofence] but this name is already used for a field in other types]]]

Так что типы не совпадают.Если бы я мог настроить, а затем вставить документы java в свой индекс, это было бы замечательно, но я не смог бы его настроить.

В принципе, я хочу просто отлично настроить использование гео-запроса в ES.Я не могу напрямую вставить, потому что тип не будет Geo_point.Или может быть будет какой-то способ?

Спасибо, что прочитали мою проблему

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...