gpt4 book ai didi

java - Elastic Search Lucene 公式计算 使用 Java

转载 作者:行者123 更新时间:2023-11-30 01:56:43 25 4
gpt4 key购买 nike

Elasticsearch 新手,使用索引来存储文档,例如是关于员工的公司信息,目前索引中有60万个员工数据,在这些员工中我们需要根据地址等特定属性进行距离计算。我们所做的基本上是以下步骤:

  • 在 java 程序中提取索引内的所有文档。
  • 使用 Lambda 实现并行性并迭代每个文档,然后计算与集合中其他元素的距离(lavenshtien、NGram 和 TFID),然后对值进行平均。

此流程的问题在于,我们将索引中存在的所有文档加载到 java 内存中,然后应用公式,这会消耗大量时间来加载和应用公式,而且 JVM 将有内存限制将文档加载到内存中。

请原谅我对这个主题的了解有限,但是有没有一种方法可以让我们直接在 Elasticsearch 上运行这些距离公式,而不是将整个索引加载到内存中。

感谢您的帮助...

最佳答案

elasticsearch中有一个针对地理点的数据类型:https://www.elastic.co/guide/en/elasticsearch/reference/current/geo-point.html

如果您能够将您拥有的地址转换为纬度/经度坐标,无论您拥有它,还是使用将地址解析为地理点的服务,那么您可以将该地理点字段映射到elasticsearch geo_point(在索引模板,请参阅我上面粘贴的链接例如)。如果您不将该字段映射到 geo_point,elasticsearch 会将其视为 float 组,即 float 类型。

一旦有了地理点字段,您就可以开始在其上运行一些距离聚合。共有三种聚合可用于 geo_point 类型的字段。请参阅此处的选项:https://www.elastic.co/guide/en/elasticsearch/guide/current/geo-aggs.html

关于java - Elastic Search Lucene 公式计算 使用 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54210739/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com