ジオポリゴンクエリ
7.12で非推奨。
Geoshapeを使用してください。ここでは、ポリゴンがGeoJSONまたはWell-Known Text (WKT)で定義されています。
ポイントのポリゴン内にのみヒットを返すクエリです。以下はその例です:
Python
resp = client.search(
query={
"bool": {
"must": {
"match_all": {}
},
"filter": {
"geo_polygon": {
"person.location": {
"points": [
{
"lat": 40,
"lon": -70
},
{
"lat": 30,
"lon": -80
},
{
"lat": 20,
"lon": -90
}
]
}
}
}
}
},
)
print(resp)
Js
const response = await client.search({
query: {
bool: {
must: {
match_all: {},
},
filter: {
geo_polygon: {
"person.location": {
points: [
{
lat: 40,
lon: -70,
},
{
lat: 30,
lon: -80,
},
{
lat: 20,
lon: -90,
},
],
},
},
},
},
},
});
console.log(response);
コンソール
GET /_search
{
"query": {
"bool": {
"must": {
"match_all": {}
},
"filter": {
"geo_polygon": {
"person.location": {
"points": [
{ "lat": 40, "lon": -70 },
{ "lat": 30, "lon": -80 },
{ "lat": 20, "lon": -90 }
]
}
}
}
}
}
}
クエリオプション
オプション | 説明 |
---|---|
_name |
フィルターを識別するためのオプションの名前フィールド |
validation_method |
IGNORE_MALFORMED に設定すると、無効な緯度または経度を持つジオポイントを受け入れ、COERCE に設定すると正しい緯度または経度を推測しようとし、STRICT (デフォルトはSTRICT )に設定します。 |
許可されるフォーマット
配列としての緯度経度
フォーマットは[lon, lat]
注:ここでのlon/latの順序はGeoJSONに準拠する必要があります。
Python
resp = client.search(
query={
"bool": {
"must": {
"match_all": {}
},
"filter": {
"geo_polygon": {
"person.location": {
"points": [
[
-70,
40
],
[
-80,
30
],
[
-90,
20
]
]
}
}
}
}
},
)
print(resp)
Js
const response = await client.search({
query: {
bool: {
must: {
match_all: {},
},
filter: {
geo_polygon: {
"person.location": {
points: [
[-70, 40],
[-80, 30],
[-90, 20],
],
},
},
},
},
},
});
console.log(response);
コンソール
GET /_search
{
"query": {
"bool": {
"must": {
"match_all": {}
},
"filter": {
"geo_polygon": {
"person.location": {
"points": [
[ -70, 40 ],
[ -80, 30 ],
[ -90, 20 ]
]
}
}
}
}
}
}
文字列としての緯度経度
#### Python
``````python
resp = client.search(
query={
"bool": {
"must": {
"match_all": {}
},
"filter": {
"geo_polygon": {
"person.location": {
"points": [
"40, -70",
"30, -80",
"20, -90"
]
}
}
}
}
},
)
print(resp)
`
Js
const response = await client.search({
query: {
bool: {
must: {
match_all: {},
},
filter: {
geo_polygon: {
"person.location": {
points: ["40, -70", "30, -80", "20, -90"],
},
},
},
},
},
});
console.log(response);
コンソール
GET /_search
{
"query": {
"bool": {
"must": {
"match_all": {}
},
"filter": {
"geo_polygon": {
"person.location": {
"points": [
"40, -70",
"30, -80",
"20, -90"
]
}
}
}
}
}
}
ジオハッシュ
Python
resp = client.search(
query={
"bool": {
"must": {
"match_all": {}
},
"filter": {
"geo_polygon": {
"person.location": {
"points": [
"drn5x1g8cu2y",
"30, -80",
"20, -90"
]
}
}
}
}
},
)
print(resp)
Js
const response = await client.search({
query: {
bool: {
must: {
match_all: {},
},
filter: {
geo_polygon: {
"person.location": {
points: ["drn5x1g8cu2y", "30, -80", "20, -90"],
},
},
},
},
},
});
console.log(response);
コンソール
GET /_search
{
"query": {
"bool": {
"must": {
"match_all": {}
},
"filter": {
"geo_polygon": {
"person.location": {
"points": [
"drn5x1g8cu2y",
"30, -80",
"20, -90"
]
}
}
}
}
}
}
geo_pointタイプ
クエリは、関連フィールドにgeo_point
タイプが設定されていることを要求します。
未マップを無視
true
に設定すると、ignore_unmapped
オプションは未マップフィールドを無視し、このクエリに対してドキュメントと一致しません。これは、異なるマッピングを持つ複数のインデックスをクエリする際に便利です。false
(デフォルト値)に設定すると、フィールドがマップされていない場合、クエリは例外をスローします。