Bitiş işareti hangi veri kümesini tamamlıyor?
Ajan açık kayıtların bütün sayfalarını okuduğunu bildiriyor. Devam işaretçisi kalmamış, her yanıt başarılı gelmiş. Yine de ilk çağrıdan sonra değişen bir kayıt listede yok. Sayfalama zincirini sonuna kadar izlemek gerekli bir kontroldür; fakat bütün sayfaların aynı veri anına ait olduğunu ayrıca belirlemek gerekir. Hareketli bir listede imleç, nereden devam edileceğini söyleyebilir; geçmişte gördüğünüz kümenin dondurulduğunu kendiliğinden garanti etmez.
Elasticsearch belgeleri, search_after çağrıları arasında bir yenileme olursa sıralamanın değişebileceğini ve sayfalar arasında tutarsız sonuçlar oluşabileceğini açıklar. Aynı indeks görünümünü korumak için point in time, yani PIT kullanılabilir. Aşağıdaki kayıt günlüğü gerçek Elasticsearch çalıştırması değildir. Değişen veri ile sabit görünümün farklı sonuçlarını adım adım göstermek için hazırlanmış özgün bir simülasyondur.Kaynak: Elasticsearch — Paginate search results
İlk sayfa ve değişiklik günlüğü
Kayıtlar artan puan, sonra kimlik sırasıyla okunuyor. Sayfa büyüklüğü ikidir. Başlangıç görünümü S1’de A=10, B=20, C=30, D=40 bulunur. İlk sayfa A ve B’yi verir; son sıralama anahtarı (20,B) olur. Görev “başlangıçtaki S1 kümesini listele” olarak tanımlıdır. Puanlar arama önem puanı değil, bu eğitim örneğinde yalnız sıralama için kullanılan sentetik sayılardır.
| Olay | S1’deki durum | Yeni canlı görünüm S2 |
|---|---|---|
| B silinir | B=20 var | B yok |
| C puanı değişir | C=30 | C=15 |
| E eklenir | E yok | E=50 |
Canlı sıralama artık A10, C15, D40, E50 olur. Ajan ikinci çağrıda hangi sözleşmeyi kullanacağını bilmelidir. Satır sayısı kadar ilerleyen bir ofset, son sıralama değerinden devam eden bir imleç ve dondurulmuş S1 görünümü aynı sonucu vermeyebilir. Bu farklılıkları tek bir “sonraki sayfa” etiketi altında gizlemek, tamamlık raporunun anlamını belirsiz bırakır.
Üç okuma yolunun sonuçlarını karşılaştırın
| Yöntem | İkinci sayfa | Birikmiş sonuç | S1 açısından durum |
|---|---|---|---|
| Canlı ofset 2 | D,E | A,B,D,E | C eksik, E sonradan eklenmiş |
| Canlı imleç (20,B) | D,E | A,B,D,E | C geriye taşındığı için kaçmış |
| S1 üzerinde aynı imleç | C,D | A,B,C,D | S1 üyeliği tamam |
Canlı imleç yönteminde C yeni puanı 15 olduğu için son anahtar 20’nin gerisindedir. İmleçten büyük anahtarları okumak onu geri getirmez. B ise ilk sayfada bulunduğundan birikmiş listede kalır, oysa güncel görünümde artık yoktur. Sonuç ne S1’in ne de S2’nin tam listesidir. Tekilleştirme bu sorunu çözmez; örnekte yinelenen kimlik olmadan da eksik ve farklı zamandan kayıtlar oluşur.
Sabit görünümün C30 ve B20 gibi eski değerleri tutması bu görevde hata değildir. İstenen başlangıç kümesidir. Güncel durumu raporlamak isteyen başka bir görev için S1 sonucu eskimiş olabilir. Dolayısıyla “tutarlı” ile “en güncel” aynı nitelik değildir. Raporun başlığında hangi ana ait görünümün listelendiğini belirtmek, teknik olarak doğru bir sayfalamayı yanlış iş sorusuna cevap olarak kullanmayı önler.
İmleçle birlikte görünüm ve sorguyu taşıyın
Görev görünümü: S1. Filtre ve sıralama bütün çağrılarda sabit. İlk sayfa: A10/B20; son anahtar (20,B). İkinci sayfa: C30/D40; devam işareti null; başka sayfa yok. Teslim: A,B,C,D; S1 başlangıç görünümü altında tamam. S2 güncelliği bu sonuçla doğrulanmaz.
Gerçek Elasticsearch akışında PIT kimliği yanıtlarla güncellenebilir; belgede en son dönen kimliğin kullanılması, sorgu ve sıralamanın değiştirilmemesi istenir. Sıra eşitlikleri için uygun bağlayıcı değer de taşınır. Buradaki S1 sabit etiketi bir öğretim kısaltmasıdır; API’nin gerçek alan adlarını veya ömrünü taklit etmez. Aracınız bu özellikleri sağlamıyorsa yalnız prompt içinde görünüm kimliği uydurmak veri kümesini dondurmaz.Kaynak: Elasticsearch — Paginate search results
Görünümün süresi dolarsa aynı birikmiş listeye yeni görünümün sayfalarını ekleyerek devam etmeyin. İş sözleşmesine göre yeni görünümle baştan başlatın veya elde edilen kapsamı kısmi olarak raporlayın. Başlatma maliyeti ve süre sınırı bu kararı etkileyebilir. Her durumda önceki okuma kanıtı korunur; yeni bir başlangıcın hangi kayıtları yeniden değerlendirdiği açıkça yazılır.
Tamlık iddiasını veri anına bağlayın
S1 A10/B20/C30/D40, artan puan sonra kimlik, sayfa boyutu 2. İlk yanıt A/B. Ardından B silinir, C15 olur, E50 eklenir. Canlı ofset 2, canlı search_after (20,B) ve S1 sabit görünümünün ikinci sayfalarını ayrı hesapla. Birikmiş listeleri S1 ve S2 üyelikleriyle karşılaştır. İmleci anlık görüntü garantisi sayma; eksik C’yi tekilleştirmeyle çözdüğünü söyleme. Çıktı: görünüm, sorgu/sıra, sayfa izi, tam/kısmi karar.
Bu istemi kullanırken aracın gerçekten döndürdüğü sıralama değerlerini ham haliyle koruyun. Metinden yeniden sayı çıkarıp imleç üretmek veya kimlik sırasını başka bir dile göre değiştirmek devam sınırını bozabilir. Bir yanıtın boş olması da yalnız kendi API sözleşmesi altında yorumlanır. Buradaki örnekte ikinci sayfadan sonra bitiş bilgisi verildiği varsayılır; başka hizmetlerin boş sayfa davranışı bu simülasyondan türetilmez.
- Başlangıç görünümü ve hedef zaman açık mı?
- Filtre, sıra ve bağlayıcı anahtar bütün çağrılarda aynı mı?
- Görünüm kaybolunca kısmi sonuç ile yeni çalışma ayrılıyor mu?
- Kimlik kapsamı hedef görünümle karşılaştırılmış mı?
Kayıt imlecin ilerisine taşınırsa
Bağımsız senaryoda başlangıç yine A10/B20/C30/D40 ve ilk sayfa A/B olsun. Bu kez yalnız A’nın puanı 35’e yükselsin. Canlı imleç (20,B) sonrası iki kayıt hangi sırayla gelir? Sonraki sayfa da okununca birikmiş listede hangi tekrar oluşur? Aynı sorguyu S1 üzerinde sürdürmenin sonucunu ayrı yazın. İki yöntem arasındaki farkı yalnız toplam satır sayısından çıkarmayın.
Canlı ikinci sayfa C30/A35, üçüncü sayfa D40. Birikmiş A,B,C,A,D listesinde A tekrar eder. Tekilleştirme dört kimlik bırakır fakat A’nın hangi sürümünün tutulacağını açıklamaz. S1 ikinci sayfası C30/D40; başlangıç üyeleri birer kez korunur.
Ajanın teslimine sayfa sayısının yanında görünüm sözleşmesini de ekleyin. Böylece bütün sayfalar okundu cümlesinin hangi veri kümesi için geçerli olduğu anlaşılır. Bu kayıt, hareketli veride eksik ve yinelenen sonuçları teşhis ederken arama kalitesiyle veri tutarlılığını birbirinden ayırmanızı sağlar.
Kaynaklar ve doğrulama
- Elasticsearch — Paginate search results
Yenilemenin search_after sayfaları arasında sıralamayı değiştirebilmesi; PIT ve sabit sorgu/sıra kullanımı.
Erişim ve kontrol:
AI Ajanları ve İş Akışı Otomasyonu
AI Ajanları ve Otomasyon programında veri okuma sözleşmenizi örnek bir dışa aktarma göreviyle çalışabilirsiniz. İlk uygulama için sorguyu, sıralamayı ve verinin hangi anını istediğinizi birlikte tanımlayın.
- Kuruma özel planlanır