Elasticsearch: تحديث API: التحديث عن طريق الاستعلام

تم إنشاؤها على ١٢ يناير ٢٠١٢  ·  160تعليقات  ·  مصدر: elastic/elasticsearch

يسمح 1583 بتحديث المستندات الفردية. سيؤدي التحديث حسب الاستعلام إلى تقليل الرحلات ذهابًا وإيابًا على الشبكة بشكل جذري إذا كنت ترغب في تحديث عدد من المستندات ودفع العمل من العميل إلى ES.

curl -XPOST localhost:9200/index/type/_update -d '{
    "query" : { "constant_score" : { "filter" : { "term" : { "counter" : 0 } } } },
    "script" : "ctx._source.counter += count",
    "params" : {
        "count" : 4
    }
}'
:DistributeCRUD

التعليق الأكثر فائدة

التحديث عن طريق الاستعلام نشط في 2.3.0 و 5.0.0-alpha-1. المستندات هنا .

ال 160 كومينتر

هل حقا أحب هذه الميزة أيضا!

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

أنا حقا بحاجة إلى هذه الميزة

: +1:

أثناء انتظار اكتمال هذه الميزة وإصدارها رسميًا ، قمت بتعبئة طلب السحب رقم 2231 كمكوِّن إضافي:
استمتع.

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

: +1:: صلى:

+1

+1

هل هناك طريقة لتمرير درجة الاستعلام كمعامل إلى البرنامج النصي للتحديث؟ أحتاج إلى تحديث الإدخالات مع الدرجات المحدثة بناءً على حقول أطفالها.

+1

+1

+1

@ scottc52 هل تمكنت من القيام بذلك؟ أنا أيضا أبحث عن طريقة للقيام بذلك.

+1

تضمين التغريدة أقوم باستعلام has_child وأرسل طلب تحديث منفصل ، لكنه بطيء.

انتظر هذه الميزة ايضا ..

+1

+1

+1

+1

+1

+1

+1

فقط كتبت نصًا صغيرًا للمساعدة في انتظار شيء ما ... المزيد "جاهز للإنتاج" ؛-)

https://github.com/YannBrrd/esNodeUpdater

لا تتردد في التعليق / التحديث ...

+1

هل هناك حالة رسمية لهذه الميزة من فريق التطوير؟ لا أرى أي مدخلات منهم. هل هناك خطط لإضافة هذه الميزة إلى النواة أم أن هناك تفضيلًا لجعل المستخدمين يستخدمون مكونًا إضافيًا مثل المكون المذكور أعلاه ؟

نحن نخطط للعودة إلى هذا الأمر ، والسبب الرئيسي لتعليق هذا الأمر هو أننا بحاجة إلى طريقة لإيقاف التحديث الحالي من خلال الاستعلامات ، حيث يمكن تنفيذها عن طريق الخطأ على كمية كبيرة من البيانات ، مما يتسبب في حدوث مشكلات .. .

+1. شكرا على التحديث والعمل على هذا.

+1

+1

+1

+1

+1 ، يبدو مفيدًا

+1

+1

+1

+1

+1

+1

+1

+1

+2

+1

+10

+1

+1

+1

هل فكرت يومًا في التنفيذ باستخدام HTTP مزدوج استدعاء هذه الميزة. أفكر في أجهزة التدفئة التي تتيح إمكانية تخزين الاستعلام ثم تنفيذ الاستعلام (إنه ليس نفس الشيء حقًا ولكنه يجعلني أفكر فيه).

kimchy تخبرني أنك تفكر في طريقة لإيقاف التحديث إذا تم إطلاقه على كمية كبيرة من البيانات عن طريق الخطأ. إذا أوقفته ، فربما تكون البيانات المفهرسة في حالة غير صالحة (ربما من الممكن التراجع ...؟). ربما يكون النهج الأفضل هو منع الخطأ.

إذا كنت تحتاج إلى مكالمتي HTTP قبل تشغيل التحديث الشامل الحقيقي (1 للتحضير و 1 لتشغيله بالفعل بمعرف انتقال بين) ثم معالج حالة التحديث (مثل معالج البيانات في SolR) لمعرفة متى يتم الاستعلام بالفعل.

لست متأكدًا من أن أكون واضحًا حقًا ولكن أعتقد أنه يمكن أن يكون حلاً لمنع المكالمات الخاطئة ...

+1

+1

أود أيضًا التصويت لصالح هذا.

+1

kimchy : لا يمكن أن يكون

ربما توافق على إضافة حدود لعملية التحديث على سبيل المثال _update / _query = some_conditions & size = 1000 وبهذه الطريقة يتجنب تحديث مليون مستند - ويمكننا كمطور أن نقرر ما إذا كنا نقوم بتشغيل 1000 * 1000 تحديث لتحديث مليون سجل ... يجب أن يُرجع عدد المستندات المحدثة لمنح بعض التحكم إذا كانت هناك حاجة لاستدعاء تحديث آخر.

+1

بالنسبة للسيناريو الخاص بي (إثراء السجلات بعد عمليات البحث في مؤشرات أخرى) يمكنني القيام بذلك بطريقة أخرى: إدخال البيانات أولاً إلى mongoDb ، وإجراء عمليات البحث في سجلات تحديث ElasticSearch في مونغو ، واستخدام نهر المونجو للحصول على النتائج النهائية في ElasticSearch لإظهارها في واجهة المستخدم الرسومية (بناء على رأس ES). هل جرب أي شخص مثل هذه السيناريوهات؟ كنت آمل أن أتمكن من الذهاب إلى ES فقط ... حتى الآن ، رفضت استخدام DB في مشروعي.

مرحبا،

يمكنك ببساطة استخدام Couchbase + Elasticsearch لهذا الغرض ، مثل Couchbase
يقدم واجهة مع Elasticsearch

ودي ،
يان بارود

2014/02/03 seti123 [email protected] :

بالنسبة للسيناريو الخاص بي (إثراء السجلات بعد عمليات البحث في مؤشرات أخرى) قد أفعل ذلك
افعل ذلك بطريقة أخرى: أدخل البيانات أولاً في mongoDb ، وقم بإجراء عمليات البحث بتنسيق
سجلات تحديث ElasticSearch في مونجو ، استخدم نهر المونجو للحصول على النتائج النهائية
في ElasticSearch لإظهاره في واجهة المستخدم الرسومية (بناءً على ES). هل من أحد
من ذوي الخبرة مع مثل هذه السيناريوهات؟ كنت آمل أن أتمكن من الذهاب ES فقط في الطريق ... حتى
الآن ، لقد رفضت استخدام DB في مشروعي.

قم بالرد على هذه الرسالة الإلكترونية مباشرة أو tHubhttps: //github.com/elasticsearch/elasticsearch/issues/1607#issuecomment -33917801
.

+1

+100

+1

+1

هل هناك بديل في ElasticSearch ، على سبيل المثال ، تشغيل برنامج نصي يقوم بإجراء ما عند إدخال بيانات جديدة أو تحديثها؟ يمكن أن يساعدني نوع ما قبل Index-Trigger في إزالة سلسلة المعالجة المسبقة (فعلنا الآن رسالة Ques مع REDIS وسلسلة معالجة 0MQ قبل إدخال البيانات في ES - كل ذلك يكلف الشبكة النطاق الترددي لخلط البيانات من أجل المعالجة المسبقة المتوازية ... )

أود رؤية
http: // localhost : 9200 / index / type / _preprocessBeforeIndex؟ script = myDataAnalysisScript
http: // localhost : 9200 / index / type / _preprocessBeforeUpdate؟ script = myDataAnalysisScript
يمكن لـ Script mus إضافة حقول جديدة إلى السجل الحالي قبل أن يقوم ES بتخزينه / فهرسته (لتجنب إجراء الفهرس المزدوج بعد التغييرات). نظرًا لأننا نعمل كثيرًا مع node.js ، يجب أن تعمل البرامج النصية باللغة المطلوبة (في حالتنا JavaScript).

والأفضل من ذلك ، إذا تمكنا من تحديد البرنامج النصي في MAPPING لكل نوع من البيانات بدلاً من المؤشرات التي تم إنشاؤها.
أي مكون إضافي متوفر قادر على تشغيل مثل هذه البرامج النصية؟ أي وثائق لاستخدام ES API في البرامج النصية؟

+1

+1

+1

+1

+1

+1

+1

+1

+1

في انتظار هذه الميزة ... (+1)

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

هل هذه الميزة قيد التطوير على الإطلاق؟
سيؤدي هذا إلى حل العديد من المشكلات التي يكاد يكون من المستحيل التعامل معها بشكل موثوق على مستوى التطبيق في الوقت الحالي.

+1

+1

+1

فقط لتذكيرك أنه منذ منتصف فبراير 2013 قمت بتجميع "طلب السحب الرسمي" # 2231 عبر فرع martijnvg كمكوِّن إضافي:

+1

+1

+1

+1

+1
كيف يمكن أن تكون هذه الميزة منذ فبراير 2013 لا تزال غير مدمجة لإتقان؟

+1
كما سبق على KrzysztofWilczek تعليق. لماذا تُرك العلاقات العامة في حالة ركود خلال العام الماضي دون أي تحديثات؟ هذا هو إلى حد بعيد الأكثر تعليقًا على القضية.

+1

لقد حصلنا على هذه المشكلة منذ عدة أشهر (انظر منشوراتي كـ
نقطة بداية جيدة للقراءة عن أوجه التشابه والاختلاف: https://crate.io/blog/crate_data_elasticsearch

مغلق لصالح # 2230

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

سيتم التحديث عن طريق الاستعلام عن دعم setPostFilter؟
العدد رقم 12295

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

هل يمكن لأحد أن يراجع هذا ويقدم ملاحظات.
https://discuss.elastic.co/t/updatebyqueryresponse-throwing-timeout/29176

فشل التحديث عن طريق الاستعلام أثناء تحديث أكثر من 20 + مليون سجل.

@ Praveen82 أنت تستخدم

https://github.com/elastic/elasticsearch/pull/15125 يقوم بتنفيذ بناء جملة يشبه قليلاً

curl -XPOST localhost:9200/index/type/_update_by_query -d '{
    "query" : { "term" : { "counter" : 0 } },
    "script" : {
      "inline": "ctx._source.counter += count",
      "params" : {
          "count" : 4
      }
  }
}'

سبب توقف هذا لفترة طويلة هو بسبب تلك المهلات: حتى الآن كانت هناك طريقة لبدء عمل طويل المدى في Elasticsearch والإبلاغ عن حالتهم وأشياءهم. من خلال واجهة برمجة تطبيقات إدارة المهام (# 15347) البارزة ، التقطت الشعلة على أشياء نمط "إعادة الفهرسة" و "التحديث حسب الاستعلام" وبدأت مرة أخرى بقصد التكامل مع إدارة المهام في أسرع وقت ممكن.

على أي حال ، # 15125 وأي علاقات عامة للمتابعة هي المكان المناسب للبحث عن هذه الميزة.

+1

+1

+1

+1

+1

التحديث عن طريق الاستعلام نشط في 2.3.0 و 5.0.0-alpha-1. المستندات هنا .

هل التحديث عن طريق الاستعلام في 2.3. + أو 5. + يدعم إضافة جافا سكريبت؟

هل التحديث عن طريق الاستعلام في 2.3. + أو 5. + يدعم إضافة جافا سكريبت؟

إذا كنت تريد ذلك حقًا ، بالتأكيد. في الإصدار 2.3+ ، نختبر التحديث تلو الآخر مقابل رائع وفي 5. + نقوم باختبار غير مؤلم. اعتدنا على الاختبار ضد رائع وعملنا هناك أيضًا. أتوقع جافا سكريبت ستعمل بشكل جيد.

سيكون دعم JS سلسًا جدًا.

سيكون دعم JS سلسًا جدًا.

كما قلت ، إنه موجود ، عليك فقط تثبيت المكون الإضافي.

تكمن مشكلة كل هذه اللغات في أن تنفيذها على JVM ليس موجهًا بشكل صحيح للتضمين. هذا هو السبب في أننا لا ندرجها بشكل افتراضي.

على أي حال ، إذا كنت تريد التحدث أكثر عن هذا الموضوع ، فأعتقد أن موقع Discuss.elastic.co هو مكان أكثر ملاءمة لذلك.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات