English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

مكونات Elasticsearch

Elasticsearch تتكون من العديد من الوحدات، والتي تتحمل المسؤولية عن وظائفها. هذه الوحدات تحتوي على نوعين من الإعدادات، كما يلي:

  • إعدادات ثابتة−قبل بدء تشغيل Elasticsearch، يجب إعداد هذه الإعدادات في ملف config(elasticsearch.yml). يجب تحديث جميع النودات المعنية في الشبكة لتعكس تغييرات هذه الإعدادات.

  • إعدادات ديناميكية −يمكن تعيين هذه الإعدادات على Elasticsearch في الوقت الحقيقي.

سنناقش في الفصول التالية في هذا الفصل مختلف الأنظمة المختلفة في Elasticsearch.

توجيه وتوزيع الفصوص على مستوى الشبكة

إعدادات المستوى الديناميكي تقرر توزيع الفصوص على نودات مختلفة، وتوزيع الفصوص لتحقيق توازن في الشبكة. إليك إعدادات التحكم في توزيع الفصوص.

توزيع الفصوص على مستوى集群

إعدادالقيم الممكنةالوصف
cluster.routing.allocation.enable

كل

هذا القيمة الافتراضية يسمح بتوزيع الفصوص لجميع أنواع الفصوص.

الأساسية

يسمح فقط بتوزيع الفصوص للمستنسخات الرئيسية.

new_primaries

يسمح فقط بتوزيع الفصوص للمستنسخات الرئيسية الجديدة.

none

لا يسمح بهذا بأي توزيع للفصوص.

cluster.routing.allocation.node_concurrent_recoveries

العدد (الافتراضي هو 2)

هذا يحد من عدد استعادة الفصوص المتوازية.

cluster.routing.allocation.node_initial_primaries_recoveriesالعدد (الافتراضي هو 4)

هذا يحد من عدد الاستعادة الأولية للمستنسخات الرئيسية بشكل متوازي.

cluster.routing.allocation.same_shard.hostقيمة بولية (الافتراضي هو false)

هذا يحد من عدد النسخ المتعددة من نفس الفص الموزعة في نفس النود الفيزيائي.

index.recovery.concurrent_streamsالعدد (الافتراضي هو 3)

هذا يتحكم في عدد الأنماط الشبكية المفتوحة على كل نود عند استعادة الفصوص من الفصوص المتشابهة.

index.recovery.concurrent_small_file_streamsقيمة عددية (بافتراض الافتراضي 2)

هذا يمكن أن يتحكم في عدد الأنماط المفتوحة على كل نود عند استعادة الفصوص ذات الحجم الأقل من 5 ميجا بايت.

cluster.routing.rebalance.enable

كل

هذا القيمة الافتراضية تسمح بالتوازن بين جميع أنواع الفصوص.

الأساسية

هذا يسمح فقط بتوازن الشقوق الرئيسية.

replicas

هذا يسمح فقط بتوازن الشقوق النسخية.

none

هذا لا يسمح بأي شكل من أشكال توازن الشقوق.

cluster.routing.allocation .allow_rebalance

always

هذا القيمة الافتراضية تسمح دائمًا بالتوازن.

indexs_primaries_active

هذا يسمح بالتوازن عند توزيع جميع الشقوق الرئيسية في الشبكة.

Indices_all_activeهذا يسمح بالتوازن عند توزيع جميع الشقوق الرئيسية والنسخ.
cluster.routing.allocation.cluster _concurrent_rebalanceقيمة عددية (بافتراض الافتراضي 2)

هذا يحد من عدد الشقوق المتوازنة المتوازية في الشبكة.

cluster.routing.allocation .balance.shardقيمة فلوتينج (بافتراض الافتراضي 0.45f)

هذا يحدد عامل الوزن للشقوق الموزعة لكل عقدة.

cluster.routing.allocation .balance.indexقيمة فلوتينج (بافتراض الافتراضي 0.55f)

هذا يحدد نسبة عدد الشقوق الموزعة لكل فهرس على العقدة المحددة.

cluster.routing.allocation .balance.thresholdقيمة غير سالبة من النوع الفلوتينج (بافتراض الافتراضي 1.0f)

هذا هو القيمة الأدنى للتحسين التي يجب تنفيذها.

توزيع الشقوق بناءً على القرص

إعدادالقيم الممكنةالوصف
cluster.routing.allocation.disk.threshold_enabled

قيمة منطقية (افتراضياً قيمة هي true)

هذا سينشط ويوقف قرارات توزيع القرص.
cluster.routing.allocation.disk.watermark.low

قيمة نصية (بافتراض الافتراضي 85%)

هذا يعني استهلاك القرص الأقصى؛ بعد ذلك، لن يمكن توزيع شقوق أخرى على هذا القرص.
cluster.routing.allocation.disk.watermark.high

قيمة نصية (بافتراض الافتراضي 90%)

هذا يعني الاستخدام الأقصى عند التوزيع؛ إذا وصل إلى هذا النقطة عند التوزيع، فإن Elasticsearch سيوزع ذلك الشق على قرص آخر.
cluster.info.update.interval

قيمة نصية (بافتراض الافتراضي 30 ثانية)

هذا هو الفاصل الزمني بين فحوصات استخدام القرص.
cluster.routing.allocation.disk.include_relocations

قيمة بولية (بافتراض الافتراضي صحيح)

هذا يحدد ما إذا كان يجب النظر في الشقوق الموزعة حاليًا عند حساب استهلاك القرص.

الإكتشاف

يساعد هذا المodule في إكتشاف وإبقاء حالة جميع العقد في المجموعة. يتحول حالة المجموعة عند إضافة أو إزالة عقد من المجموعة. يمكن استخدام بعض المODULES لتوفير API التي توفرها المزودون في السحابة، مثلما هو موضح أدناه -

  • إكتشاف Azure

  • إكتشاف EC2

  • إكتشاف Google Cloud Engine

  • إكتشاف ZEN

شبكة الجسر

يحافظ هذا المodule على حالة المجموعة وتاريخ الشقوق عند إعادة تشغيل المجموعة بالكامل. إليك إعدادات هذا المodule الثابتة -

إعدادالقيم الممكنةالوصف
gateway.expected_nodes

قيمة عددية (افتراضياً قيمة هي 0)

عدد العقد المستخدمة لاستعادة الشقوق المحلية في المجموعة.
gateway.expected_master_nodes

قيمة عددية (افتراضياً قيمة هي 0)

عدد العقد الرئيسية المتوقع في المجموعة قبل بدء الإصلاح.
gateway.expected_data_nodes

قيمة عددية (افتراضياً قيمة هي 0)

عدد العقد المتوقع في المجموعة قبل بدء الإصلاح.
gateway.recover_after_time

قيمة نصية (افتراضياً قيمة هي 5m)

هذا هو الفاصل الزمني بين فحوصات استخدام القرص.
cluster.routing.allocation. disk.include_relocations

قيمة منطقية (افتراضياً قيمة هي true)

يحدد هذا الوقت الذي سيبدأ فيه عملية الإصلاح، بغض النظر عن عدد العقد التي انضمت إلى المجموعة.

gateway.recover_after_nodes
gateway.recover_after_master_nodes
gateway.recover_after_data_nodes

HTTP

يدير هذا المodule التواصل بين عميل HTTP و API لـ Elasticsearch. يمكن تعطيل هذا المodule عن طريق تغيير قيمة http.enabled إلى false.

هذا هو إعداد هذا المodule (في Elasticsearch.yml)

الرقمالإعداد والشرح
1

http.port

هذا هو مرفق الوصول إلى Elasticsearch، ويتراوح بين 9200-9300.

2

http.publish_port

هذا المرفق يستخدم لعميل http، وهو مفيد جدًا في حالة الحماية النصية.

3

http.bind_host

هذا هو عنوان المضيف الخاص بخدمة http.

4

http.publish_host

هذا هو عنوان المضيف الخاص بعميل http.

5

http.max_content_length

هذا هو الحجم الأكبر للمحتوى في طلب http. قيمته الافتراضية هي 100mb.

6

http.max_initial_line_length

这是URL的最大大小,其默认值为4kb。

7

http.max_header_size

这是 http 头的最大大小,默认值为8kb。

8

http.compression

这将启用或禁用对压缩的支持,其默认值为false。

9

http.pipelinig

这将启用或禁用 HTTP 管道。

10

http.pipelining.max_events

这限制了在关闭HTTP请求之前要排队的事件数。

索引

此模块维护为每个索引全局设置的设置。以下设置主要与内存使用有关-

断路器

这用于防止操作引起OutOfMemroyError。该设置主要限制JVM堆大小。例如,indexs.breaker.total.limit设置,默认为JVM堆的70%。

现场数据缓存

主要用于在字段上聚合时使用。建议有足够的内存来分配它。可以使用index.fielddata.cache.size设置来控制用于字段数据缓存的内存量。

节点查询缓存

该内存用于缓存查询结果。该缓存使用最近最少使用(LRU)驱逐策略。Indices.queries.cahce.size设置控制此缓存的内存大小。

索引缓冲区

该缓冲区将新创建的文档存储在索引中,并在缓冲区已满时刷新它们。像indexs.memory.index_buffer_size这样的设置控制为此缓冲区分配的堆数量。

分片请求缓存

该缓存用于存储每个分片的本地搜索数据。可以在创建索引期间启用缓存,也可以通过发送URL参数来禁用缓存。

Disable cache - ?request_cache = true
Enable cache "index.requests.cache.enable": true

索引恢复

它在恢复过程中控制资源。以下是设置-

إعدادالقيمة الافتراضية
indices.recovery.concurrent_streams3
indices.recovery.concurrent_small_file_streams2
indices.recovery.file_chunk_size512kb
indices.recovery.translog_ops1000
indices.recovery.translog_size512kb
indices.recovery.compresstrue
indices.recovery.max_bytes_per_sec40mb

محدد فترة العمر

محدد فترة العمر (TTL) للوثيقة الوقت، بعد ذلك سيتم حذف الوثيقة. هي مجموعة من الإعدادات الديناميكية تستخدم لتحكم في هذا العملية -

إعدادالقيمة الافتراضية
indices.ttl.interval60s
indices.ttl.bulk_size1000

العقدة

كل عقدة يمكنها اختيار ما إذا كانت عقدة بيانات أم لا. يمكن تعديل هذا المفتاح من خلال تغيير إعداد node.data. عند تعيين هذا القيمة إلى false، سيتم تعريف العقدة بأنها ليست عقدة بيانات.