ポイントフィールドタイプ
point
データタイプは、2次元平面座標系において任意の x, y
ペアのインデックス作成と検索を容易にします。
このタイプを使用してドキュメントをクエリするには、shape Queryを使用します。
geo_shape や geo_point と同様に、point
は GeoJSON および Well-Known Text 形式で指定できます。ただし、便利さと歴史的理由からサポートされている追加の形式がいくつかあります。合計で、デカルト点を指定する方法は5つあり、以下に示します:
Python
resp = client.indices.create(
index="my-index-000001",
mappings={
"properties": {
"location": {
"type": "point"
}
}
},
)
print(resp)
resp1 = client.index(
index="my-index-000001",
id="1",
document={
"text": "Point as an object using GeoJSON format",
"location": {
"type": "Point",
"coordinates": [
-71.34,
41.12
]
}
},
)
print(resp1)
resp2 = client.index(
index="my-index-000001",
id="2",
document={
"text": "Point as a WKT POINT primitive",
"location": "POINT (-71.34 41.12)"
},
)
print(resp2)
resp3 = client.index(
index="my-index-000001",
id="3",
document={
"text": "Point as an object with 'x' and 'y' keys",
"location": {
"x": -71.34,
"y": 41.12
}
},
)
print(resp3)
resp4 = client.index(
index="my-index-000001",
id="4",
document={
"text": "Point as an array",
"location": [
-71.34,
41.12
]
},
)
print(resp4)
resp5 = client.index(
index="my-index-000001",
id="5",
document={
"text": "Point as a string",
"location": "-71.34,41.12"
},
)
print(resp5)
Ruby
response = client.indices.create(
index: 'my-index-000001',
body: {
mappings: {
properties: {
location: {
type: 'point'
}
}
}
}
)
puts response
response = client.index(
index: 'my-index-000001',
id: 1,
body: {
text: 'Point as an object using GeoJSON format',
location: {
type: 'Point',
coordinates: [
-71.34,
41.12
]
}
}
)
puts response
response = client.index(
index: 'my-index-000001',
id: 2,
body: {
text: 'Point as a WKT POINT primitive',
location: 'POINT (-71.34 41.12)'
}
)
puts response
response = client.index(
index: 'my-index-000001',
id: 3,
body: {
text: "Point as an object with 'x' and 'y' keys",
location: {
x: -71.34,
y: 41.12
}
}
)
puts response
response = client.index(
index: 'my-index-000001',
id: 4,
body: {
text: 'Point as an array',
location: [
-71.34,
41.12
]
}
)
puts response
response = client.index(
index: 'my-index-000001',
id: 5,
body: {
text: 'Point as a string',
location: '-71.34,41.12'
}
)
puts response
Js
const response = await client.indices.create({
index: "my-index-000001",
mappings: {
properties: {
location: {
type: "point",
},
},
},
});
console.log(response);
const response1 = await client.index({
index: "my-index-000001",
id: 1,
document: {
text: "Point as an object using GeoJSON format",
location: {
type: "Point",
coordinates: [-71.34, 41.12],
},
},
});
console.log(response1);
const response2 = await client.index({
index: "my-index-000001",
id: 2,
document: {
text: "Point as a WKT POINT primitive",
location: "POINT (-71.34 41.12)",
},
});
console.log(response2);
const response3 = await client.index({
index: "my-index-000001",
id: 3,
document: {
text: "Point as an object with 'x' and 'y' keys",
location: {
x: -71.34,
y: 41.12,
},
},
});
console.log(response3);
const response4 = await client.index({
index: "my-index-000001",
id: 4,
document: {
text: "Point as an array",
location: [-71.34, 41.12],
},
});
console.log(response4);
const response5 = await client.index({
index: "my-index-000001",
id: 5,
document: {
text: "Point as a string",
location: "-71.34,41.12",
},
});
console.log(response5);
コンソール
PUT my-index-000001
{
"mappings": {
"properties": {
"location": {
"type": "point"
}
}
}
}
PUT my-index-000001/_doc/1
{
"text": "Point as an object using GeoJSON format",
"location": {
"type": "Point",
"coordinates": [-71.34, 41.12]
}
}
PUT my-index-000001/_doc/2
{
"text": "Point as a WKT POINT primitive",
"location" : "POINT (-71.34 41.12)"
}
PUT my-index-000001/_doc/3
{
"text": "Point as an object with 'x' and 'y' keys",
"location": {
"x": -71.34,
"y": 41.12
}
}
PUT my-index-000001/_doc/4
{
"text": "Point as an array",
"location": [ -71.34, 41.12 ]
}
PUT my-index-000001/_doc/5
{
"text": "Point as a string",
"location": "-71.34,41.12"
}
GeoJSON 形式で type および coordinates キーを持つオブジェクトとして表現されたポイント。 |
|
Well-Known Text 形式の POINT として表現されたポイント: "POINT(x y)" |
|
x および y キーを持つオブジェクトとして表現されたポイント。 |
|
形式: [ x , y ] の配列として表現されたポイント。 |
|
形式: "x,y" の文字列として表現されたポイント。 |
geo-point フィールドタイプの場合とは異なり、上記のすべての形式で座標 x
および y
の順序は同じです。
インデクサに提供される座標は単精度浮動小数点値であるため、フィールドは Java 仮想マシンによって提供されるのと同じ精度を保証します(通常は 1E-38
)。
ポイントフィールドのパラメータ
以下のパラメータは point
フィールドで受け入れられます:
ignore_malformed |
true の場合、誤ったポイントは無視されます。false (デフォルト) の場合、誤ったポイントは例外をスローし、ドキュメント全体が拒否されます。 |
ignore_z_value |
true (デフォルト) の場合、3次元ポイントが受け入れられ(ソースに保存されます)ただし、x および y 値のみがインデックスされ、3次元は無視されます。 false の場合、x および y の値(2次元)以外のポイントは例外をスローし、ドキュメント全体が拒否されます。 |
null_value |
明示的な null 値の代わりに使用されるポイント値を受け入れます。デフォルトは null で、これはフィールドが欠落していると見なされることを意味します。 |
ポイントのソートと取得
現在、ポイントをソートしたり、そのフィールドを直接取得したりすることはできません。point
値は _source
フィールドを通じてのみ取得可能です。