基于Java的弹性搜索Lucene公式计算
Elastic search的新功能是使用索引存储文档,例如员工的公司信息,目前索引中有600000个员工数据,在这些员工中,我们需要根据特定属性(如地址)计算距离。我们所做的基本上是以下步骤:基于Java的弹性搜索Lucene公式计算,java,elasticsearch,lucene,Java,elasticsearch,Lucene,Elastic search的新功能是使用索引存储文档,例如员工的公司信息,目前索引中有600000个员工数据,在这些员工中,我们需要根据特定属性(如地址)计算距离。我们所做的基本上是以下步骤: 在java程序中提取索引中的所有文档 在中使用Lambdas实现并行性,并迭代每个文档,然后计算与集合中其他元素的距离(lavenshtien、NGram和TFID),然后求出值的平均值 这个流程的问题是,我们将索引中存在的所有文档加载到java内存中,然后应用公式,这占用了加载和应用公式的大量时间
- 在java程序中提取索引中的所有文档
- 在中使用Lambdas实现并行性,并迭代每个文档,然后计算与集合中其他元素的距离(lavenshtien、NGram和TFID),然后求出值的平均值
感谢您的帮助…elasticsearch中有一种数据类型用于地理点: 如果您能够将您拥有的地址转换为其纬度/经度坐标,或者您拥有它,或者使用将地址解析为地理点的服务,那么您可以将该地理点字段映射到elasticsearch地理点(在索引模板中,请参见我上面粘贴的链接)。如果不将字段映射到geo_point,elasticsearch会将其视为浮点数组,这是浮点类型 一旦有了地理点字段,就可以开始在其上运行一些距离聚合。有三个聚合可用于geo_point类型的字段。请参见此处的选项: