如何在地理过滤器中使用点符号

时间:2016-03-30 13:46:31

标签: elasticsearch geolocation

我使用Elasticsearch 2.2.1搜索与特定地理位置相关的文档(在bouding框内)。我想创建一个可以用来检查新文档是否与现有查询相关的过滤器。

如果我将过滤器放入包含文档的索引中,但由于此document中提到的问题以及提到的解决方法here,我需要将percolate查询放入专用的过滤器中索引。

当我尝试将过滤器放入此索引时:

PUT /mypercindex/.percolator/1
  {"query": {"filtered": {"filter":
    {"bool":
        {"should":
            [
                {"geo_bounding_box":
                    {"location.coordinates":
                        {"bottom_right":
                            {"lat":50.0,"lon":8.0}
                        ,"top_left":
                            {"lat":54.0,"lon":3.0}
                        }
                    }
                }
            ]
        }
    }
}}}

我收到一条错误消息:

  

可以为名称为[location.coordinates]

的字段找到严格的字段分辨率和字段映射

在过滤器文档中mentioned,如果是专用的过滤器索引,您需要:

  

确保来自普通索引的映射也可用于渗透指数

这可能会导致我的问题,但我找不到有关如何从另一个索引中获取映射的文档。我尝试使用与我的文档索引相同的映射添加专用的过滤器索引,但是当我这样做时,我仍然得到相同的错误消息。

我的文档索引的映射类似于:

{"my_mapping": {
  "dynamic":"strict",
  "properties":{
    "body":{
        "properties":{
            "author":{
                "type":"string",
                "index":"not_analyzed"
            },
            "hashtags":{
                "type":"string",
                "index":"not_analyzed"
            },
            "language":{
                "type":"string",
                "index":"not_analyzed"
            }
            ,"text":{
                "type":"string",
                "analyzer":"stopwords"
            },
            "title":{
                "type":"string",
                "analyzer":"stopwords"
            }
        }
    },
    "location":{
        "properties":{
            "coordinates":{
                "type":"geo_point"
            },
            "names":{
                "type":"string",
                "analyzer":"standard"
            }
        }
    }
  }
}}

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

向映射添加<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" android:weightSum="2"> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:orientation="vertical"> <TextView android:id="@+id/mainText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10dip" android:text="Default Text" android:textSize="24dip" /> <TextView android:id="@+id/detailsText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="5dip" android:text="Default Text" android:layout_gravity="center_horizontal" /> </LinearLayout> <Button android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:layout_gravity="center" android:text="Hot" /> </LinearLayout> 映射,例如mentioned in the Github issue that addresses this workaround,为我解决了问题:

.percolator