阿米特在这里, 我的问题是 我想在Cassandra中存储与Geo相关的详细信息及其在Elastic搜索中的索引,以便更快地访问。 我想存储国家/地区名称,国家/地区ISO代码,州/地区,城市名称以及纬度和经度。我可以在弹性搜索中使用geopoint来存储Lat / long但无法获得有关Cassandra的任何信息。应该是什么数据类型? 所以请告诉我在Cassandra / Elastic搜索中存储地理详细信息的方法
阿米特
答案 0 :(得分:0)
您可以使用 Cassandra
创建自己的用户定义类型CREATE TYPE geopoint (
latitude double,
longitude double,
)
CREATE TABLE geodetails(
object_id uuid,
country text,
country_iso_codex text,
state text,
region text,
city text,
location frozen<geopoint>,
PRIMARY KEY(object_id)
);
注意冻结&lt; geopoint&gt; 语法
答案 1 :(得分:0)
如果您只想存储lat-lng,则@doandyhai提出的解决方案是很好的,但是在查询数据时不会有帮助。
您应该使用 PointType 来存储经纬度,并且可以在此之上执行地理空间查询。
//CREATE TABLE
CREATE TABLE test (
id text PRIMARY KEY,
point 'PointType',
linestring 'LineStringType');
// Insert Query
INSERT INTO test (id, point, linestring)
VALUES ('1', 'POINT(5 50)', 'LINESTRING (30 10, 10 30, 40 40)' );
//Find points within a 10 unit radius from point (4, 49):
SELECT * FROM test
WHERE solr_query= '{ "q":"*:*", "fq":"point:\"IsWithin(BUFFER(POINT(4.0 49.0), 10.0))\"" }';
来源:Datastax Cassandra Docs地理空间查询。
有关更多参考,请使用此link
仅供参考:在触发查询之前,先设置Solr Core:https://docs.datastax.com/en/archived/datastax_enterprise/5.0/datastax_enterprise/srch/creatingCoreCustomIndexResources.html