gpt4 book ai didi

php - 如何在Elasticsearch索引中添加地理位置

转载 作者:行者123 更新时间:2023-12-03 00:05:21 25 4
gpt4 key购买 nike

我正在将elasticsearchphp结合使用,我想使用地理位置距离查询进行搜索,但是在阅读了Google上的一些文章之后,我必须在当前的索引代码中添加geo location,但不知道如何添加。

$indexed = $client->index([
'index' => 'users',
'type' => 'user',
'body' => [
'name' => $name,
'email' => $email,
'company' => $company,
'phone' => $phone,
'streetAddress' => $streetAddress,
'route' => $route,
'city' => $locality,
'state' => $state,
'postalCode' => $postalCode,
'country' => $country,
'latitude' => $latitude,
'longitude' => $longitude,
'content' => $content,
'date' => strtotime(date('Y-m-d H:i:s'))
]
]);

我指的是这篇 Geo Location and Search文章,但对如何实现和使用搜索查询一无所知。

任何的想法?

谢谢。

最佳答案

在文档中,您需要插入位置,例如:

$indexed = $client->index([
'index' => 'users',
'type' => 'user',
'body' => [
'name' => $name,
'email' => $email,
'company' => $company,
'phone' => $phone,
'streetAddress' => $streetAddress,
'route' => $route,
'city' => $locality,
'state' => $state,
'postalCode' => $postalCode,
'country' => $country,
'content' => $content,
'date' => strtotime(date('Y-m-d H:i:s')),
'location' => [
'lat' => $latitude,
'lon' => $longitude
]
]
]);

您还需要向文档中添加属性( mapping):

将请求放入您的 flex 搜索中,例如: localhost:9200/users/_mapping/user
  "properties" : {
"location" : {
"type" : "geo_point"
}
}

并在查询中发送如下:
{
"filtered" : {
"query" : {
},
"filter" : {
"geo_distance" : {
"distance" : "12km",
"user.location" : {
"lat" : 40,
"lon" : -70
}
}
}
}
}

关于php - 如何在Elasticsearch索引中添加地理位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45568333/

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