【问题标题】:Elastic Search Lucene formula calculation Using Java使用 Java 进行 Elastic Search Lucene 公式计算
【发布时间】:2019-01-16 05:05:53
【问题描述】:

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

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

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

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

感谢您的帮助...

【问题讨论】:

    标签: java elasticsearch lucene


    【解决方案1】:

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

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

    一旦你有了地理点字段,你就可以开始在它上面运行一些距离聚合。有三种聚合可以使用 geo_point 类型的字段。在此处查看选项:https://www.elastic.co/guide/en/elasticsearch/guide/current/geo-aggs.html

    【讨论】:

      猜你喜欢
      • 2015-02-03
      • 1970-01-01
      • 1970-01-01
      • 2020-05-12
      • 1970-01-01
      • 2014-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多