Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于Java的弹性搜索Lucene公式计算_Java_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Lucene - Fatal编程技术网 elasticsearch,lucene,Java,elasticsearch,Lucene" /> elasticsearch,lucene,Java,elasticsearch,Lucene" />

基于Java的弹性搜索Lucene公式计算

基于Java的弹性搜索Lucene公式计算,java,elasticsearch,lucene,Java,elasticsearch,Lucene,Elastic search的新功能是使用索引存储文档,例如员工的公司信息,目前索引中有600000个员工数据,在这些员工中,我们需要根据特定属性(如地址)计算距离。我们所做的基本上是以下步骤: 在java程序中提取索引中的所有文档 在中使用Lambdas实现并行性,并迭代每个文档,然后计算与集合中其他元素的距离(lavenshtien、NGram和TFID),然后求出值的平均值 这个流程的问题是,我们将索引中存在的所有文档加载到java内存中,然后应用公式,这占用了加载和应用公式的大量时间

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

  • 在java程序中提取索引中的所有文档
  • 在中使用Lambdas实现并行性,并迭代每个文档,然后计算与集合中其他元素的距离(lavenshtien、NGram和TFID),然后求出值的平均值
这个流程的问题是,我们将索引中存在的所有文档加载到java内存中,然后应用公式,这占用了加载和应用公式的大量时间,而且JVM将有内存限制来加载内存中的文档

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


感谢您的帮助…

elasticsearch中有一种数据类型用于地理点:

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

一旦有了地理点字段,就可以开始在其上运行一些距离聚合。有三个聚合可用于geo_point类型的字段。请参见此处的选项: