gpt4 book ai didi

php - 不能在同一必须过滤条件中包含一个字词和geo_distance_range

转载 作者:行者123 更新时间:2023-12-02 23:33:06 25 4
gpt4 key购买 nike

我有一些数据,我试图获得某个月的所有结果,并且距目标点不到1.6公里。我正在使用PHP客户端,因此查询如下。

$crimeSearch = [
'size' => 0,
'query' => [
'filtered' => [
'filter' => [
'bool' => [
'must' => [
'term' => [
'month' => $date,
],
'geo_distance_range' => [
'location' => [
'lat' => $lat,
'lon' => $lng,
],
'lt' => '1.6km',
],

],
],
],
],
],
'aggs' => [
'group_by_category' => [
'terms' => [
'field' => 'category',
],
],
],
];

我目前看到以下错误:
query_parsing_exception: No query registered for [location]

我的映射如下所示:
"properties": {
"location": {
"type": "geo_point"
},
"category": {
"type": "string",
"index": "not_analyzed"
},
"month": {
"type": "string",
"index": "not_analyzed"
}
}

现在,如果我从must数组中注释掉term值或geo_distance_range值,那么我会得到正确的结果。仅当它们同时存在时,才会发生此错误。

谁能看到我的查询错误?

我尝试将geo_distance_range移到其自己的must块中,但这似乎会带回所有与must过滤器中的一个匹配的结果,而不是两者都匹配的结果。

如果您需要更多信息,请询问!

谢谢。

最佳答案

我对PHP一无所知,但是如果我尝试转换等效的ES json query,则可能会起作用。我想你需要将每个must clause放在这样的数组中

[
'size' => 0,
'query' => [
'filtered' => [
'filter' => [
'bool' => [
'must' => [
[
'term' => [
'month' => $date,
]
],
[
'geo_distance_range' => [
'location' => [
'lat' => $lat,
'lon' => $lng,
],
'lt' => '1.6km',
],
],
],
],
],
],
],
'aggs' => [
'group_by_category' => [
'terms' => [
'field' => 'category',
],
],
],
];

这相当于
{
"query": {
"filtered": {
"filter": {
"bool": {
"must": [
{
"term": {
"month": "June"
}
},
{
"geo_distance_range": {
"lt": "1.6km",
"location": {
"lat": 37.9174,
"lon": -122.305
}
}
}
]
}
}
}
}
}

这样行吗?

关于php - 不能在同一必须过滤条件中包含一个字词和geo_distance_range,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34475992/

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