Картографирование геосоединения
Я не могу сопоставить геопункт с elassandra и драйвером cassandra-express.
геопоинт UDT:
manageESIndex: true, udts: {геопоинт: { lat: 'double', lon: 'double' } }
Кассандра таблицы упругого отображения:
location: {
type: 'frozen',
typeDef: '<geopoint>'
}
...
es_index_mapping: {
discover: '.*',
properties: {
"location": {
"type": "geo_point"
}
}
}
Результирующее упругое отображение:
"location": {"type": "nested", "cql_collection": "singleton", "cql_udt_name": "геопункт", "properties": { "lat": { "type": "double", "cql_collection": "singleton" }, "lon": { "type": "double", "cql_collection": "singleton" } } }
Как можно видеть, отображение создает не geo_point, а пару широта / долгота. Это не работает при попытке сделать дистанционный поиск. Кажется, что при использовании 'Discover' свойства отображения игнорируются.
0 ответов
Я столкнулся с похожей проблемой с другим типом / столбцом.
В документации сказано, что при использовании:
discover: '.*'
Он обнаруживает все столбцы, но вы можете переопределить с помощью:
properties: {
<column-name>: {
type: '<specific-type>',
cql_collection: 'singleton'
}
}
Правда в том, что переопределение на самом деле не происходит. (Пробовал с последней версией 6.2.3.8 Elassandra.)
Я обнаружил, что гораздо проще просто прописать все столбцы и создать свое отображение таким образом, и никогда не использовать discover: ...
поле.
Тем не менее, я использую discover: ...
один раз, чтобы получить сопоставления по умолчанию и понять, что я должен использовать в моих собственных определениях. Часто, однако, это несколько неправильно, и мне нужно сделать небольшие изменения. Тем не менее, в конце концов, это работало отлично для меня, как только я удалил discover: '.*'
линия.
Одна вещь, которая очень важна, это "cql_collection": "singleton"
, Без этого по умолчанию создается столбец как set<>
или же list<>
вместо простого int
или же text
и т. д. В документах говорится, что это происходит потому, что Elasticsearch ожидает данные. Я полагаю, что имея set<>
или же list<>
собирается сделать вещи намного сложнее и труднее читать / писать. Я думаю, мне нужно проверить, работает ли он лучше или нет с соответствующим тестом производительности...
Вы можете найти реальный пример использования geo_point
тип данных с elassandra
от сюда