إمكانات البحث الجغرافي المكاني
طبّق عمليات ربط geo-point وgeo-shape لإجراء عمليات بحث مستندة إلى الموقع واستعلامات القرب وتجميعات جغرافية مكانية
إمكانات البحث الجغرافي المكاني درس مجاني في Elasticsearch & Full Text Search Systems على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Elasticsearch & Full Text Search Systems، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Elasticsearch & Full Text Search Systems 4 دروس في المجموع.
بعض أجزاء هذا الدرس لم تُترجم بعد وتظهر باللغة الإنجليزية.
Location-Aware Search
Welcome to Geospatial Search! Many modern applications rely on location data, from finding nearby restaurants to tracking delivery vehicles.
Elasticsearch provides powerful features to index, search, and analyze geographic information efficiently.
The `geo_point` Field
The most common way to store a single geographical location in Elasticsearch is using the geo_point data type.
It represents a specific point on Earth using its latitude and longitude coordinates.
- Latitude: North-South position (e.g., 48.8584)
- Longitude: East-West position (e.g., 2.2945)
Mapping `geo_point` Data
Before indexing documents with location data, you need to define a geo_point field in your index mapping. This tells Elasticsearch how to interpret the coordinates.
Try setting up an index named places with a location field of type geo_point:
curl -X PUT "localhost:9200/places?pretty" -H 'Content-Type: application/json' -d'
{
"mappings": {
"properties": {
"location": {
"type": "geo_point"
},
"name": {
"type": "text"
}
}
}
}'Adding Geo-Tagged Documents
Now that our places index is mapped, we can index documents containing geo_point data. The location field can accept an object with lat and lon properties.
Index the Eiffel Tower's location:
curl -X PUT "localhost:9200/places/_doc/1?pretty" -H 'Content-Type: application/json' -d'
{
"name": "Eiffel Tower",
"location": {
"lat": 48.8584,
"lon": 2.2945
}
}'Searching by Distance: `geo_distance`
One of the most common geospatial queries is finding documents within a certain radius of a central point. This is achieved using the geo_distance query.
You specify a distance and the reference point, and Elasticsearch returns all matching documents.
`geo_distance` Query Example
Let's find all places within 5 kilometers of the Eiffel Tower's coordinates. This query is perfect for 'find restaurants near me' features.
Run this query:
curl -X GET "localhost:9200/places/_search?pretty" -H 'Content-Type: application/json' -d'
{
"query": {
"geo_distance": {
"distance": "5km",
"location": {
"lat": 48.8584,
"lon": 2.2945
}
}
}
}'Bounding Box Search (`geo_bounding_box`)
Another useful query is geo_bounding_box, which allows you to find all documents whose geo_point falls within a specified rectangular area.
You define the box by providing its top_left and bottom_right coordinates.
`geo_bounding_box` Query Example
Imagine you have a map view and only want to show results within the current screen. A geo_bounding_box query is ideal for this scenario.
Here's an example searching within a small area around Paris:
curl -X GET "localhost:9200/places/_search?pretty" -H 'Content-Type: application/json' -d'
{
"query": {
"geo_bounding_box": {
"location": {
"top_left": {
"lat": 49,
"lon": 2
},
"bottom_right": {
"lat": 48,
"lon": 3
}
}
}
}
}'Beyond Points: `geo_shape`
While geo_point is great for single locations, what if you need to represent complex geometries like a park boundary, a river, or a country's outline?
For this, Elasticsearch offers the geo_shape data type, which supports various GeoJSON shapes (polygons, lines, multi-points, etc.).
`geo_shape` Mapping & Indexing
To use geo_shape, you first map the field as geo_shape. Then, you can index documents with complex geometries, typically in GeoJSON format. Here's how to map and index a simple polygon representing a district:
curl -X PUT "localhost:9200/regions?pretty" -H 'Content-Type: application/json' -d'
{
"mappings": {
"properties": {
"area": {
"type": "geo_shape"
},
"name": {
"type": "keyword"
}
}
}
}'
curl -X PUT "localhost:9200/regions/_doc/1?pretty" -H 'Content-Type: application/json' -d'
{
"name": "Paris District",
"area": {
"type": "polygon",
"coordinates": [
[
[2.2, 48.8],
[2.3, 48.8],
[2.3, 48.9],
[2.2, 48.9],
[2.2, 48.8]
]
]
}
}'Geo Query Challenge
You want to find all restaurants located within the boundaries of a specific park. The park's boundaries are complex and not a simple rectangle.
Geospatial Search Recap
You've explored Elasticsearch's powerful geospatial capabilities!
- We learned about the
geo_pointtype for single locations (latitude, longitude). - We used
geo_distancefor proximity searches andgeo_bounding_boxfor rectangular area searches. - We also introduced the advanced
geo_shapetype for complex geometries like polygons.
These tools are essential for building sophisticated location-aware applications.
الأسئلة الشائعة
هل درس «إمكانات البحث الجغرافي المكاني» مجاني؟
نعم — نص درس «إمكانات البحث الجغرافي المكاني» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Elasticsearch & Full Text Search Systems، انتقل إلى CoddyKit PRO. تتضمن دورة Elasticsearch & Full Text Search Systems 4 دروس في المجموع.
ماذا ستتعلم في «إمكانات البحث الجغرافي المكاني»؟
طبّق عمليات ربط geo-point وgeo-shape لإجراء عمليات بحث مستندة إلى الموقع واستعلامات القرب وتجميعات جغرافية مكانية تتمرن على Elasticsearch & Full Text Search Systems مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Elasticsearch & Full Text Search Systems؟
لا تُشترط خبرة سابقة. Elasticsearch & Full Text Search Systems على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «إمكانات البحث الجغرافي المكاني»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Elasticsearch & Full Text Search Systems هذا؟
نعم. كل درس في Elasticsearch & Full Text Search Systems يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- إمكانات البحث الجغرافي المكاني
- إدارة بيانات السلاسل الزمنية
- استراتيجيات النشر في بيئة الإنتاج
- إدارة دورة حياة الفهارس