تحديد ما إذا كان فهرس واجهة برمجة التطبيقات للبحث موجودًا

في منطق عملي ، أحتاج أولاً إلى التحقق مما إذا كان يوجد فهرس API Appengine Search. إذا وجدت ، ثم تحديد الطول.

for index in search.list_indexes(fetch_schema=False):
   if name == index.name:
        indexed = True

المشكلة هي أن القائمة بأكملها لا يتم إرجاعها. لذلك جربت ما يلي:

for index in search.list_indexes(fetch_schema=False, limit=500):
    logging.info("sent name: " + name + " : official index name: " + index.name)

كانت النتائج أنه يقتصر على 100 مؤشر. يجب أن أكون في عداد المفقودين شيء.

سؤالي عبارة عن قسمين:

  1. هل هناك طريقة أفضل للتحقق من وجود الفهرس؟ (طريقي تشعر بالخطأ)

  2. لماذا قد ترجع list_indexes 100 فقط عندما يكون لدينا بوضوح المزيد؟

تصحيح:-----------------------------------------

استنادًا إلى اقتراح @ skreft ، قمت بتحديث شفرتي باستخدام هذا:

    for index in search.list_indexes(fetch_schema=False, include_start_index=True, start_index_name="some_index", limit=1000):
        logging.info("sent name: " + name + " : official index name: " + index.name)
        if name == index.name:
            indexed = True`enter code here`

لكن المشكلة هي أنني أتلقى رسالة خطأ مشفرة للغاية ، وأنا اتبعت المستندات بشكل صريح. أي شخص آخر يكون ذلك؟ (الخطأ أدناه):

Traceback (most recent call last):
  File "/base/data/home/apps/s~searchbertha-hrd/82.359784956262345840/models.py", line 1898, in build_searchable_index
    for index in search.list_indexes(fetch_schema=False, include_start_index=True, start_index_name=name, limit=1000):
  File "/base/python_runtime/python_lib/versions/1/google/appengine/api/search/search.py", line 675, in list_indexes
    raise _ToSearchError(e)
InvalidRequest
0

1 إجابة

حاول استخدام المعلمات start_index_name و include_start_index.

راجع المستندات لمزيد من المعلومات.

0
وأضاف
شكرا على اقتراحك. لقد حاولت ذلك ، وقمت بتعديل سؤالي أعلاه. أنا متعكز على رسالة _ToSearchError (e) مشفرة للغاية. أفكار؟
وأضاف المؤلف user1453956, مصدر
قام index_name_prefix بعمل الخدعة. شكرا جزيلا.
وأضاف المؤلف user1453956, مصدر
حاول تغيير الحد إلى 100. لقد نجح ذلك بالنسبة لي. أيضا ، في حالتك أعتقد أنه من الأنسب استخدام index_name_prefix.
وأضاف المؤلف Sebastian Kreft, مصدر