Dizin oluştururken bir alanın veri türünü metin (text), uzun tamsayı (long), çift duyarlıklı ondalık sayı (double) veya JSON olarak ayarlayabilirsiniz. Bu konuda alanların veri türleri açıklanır ve yapılandırma örnekleri sunulur.
Veri türlerine genel bakış
Dizin oluşturma işlemini konsol üzerinden gerçekleştirmenizi öneririz. Simple Log Service (SLS), toplama sırasında ön izleme verilerindeki ilk girişe dayanarak otomatik olarak bir alan dizini oluşturur; ayrıca özel alan dizinleri de oluşturabilirsiniz.
-
Metin (text), uzun tamsayı (long) ve çift duyarlıklı ondalık sayı (double) türleri:
-
String türündeki alanları sorgulamak ve analiz etmek istiyorsanız dizin oluştururken bu alanların veri türünü metin (text) olarak ayarlamalı ve alanlar için Analizi Etkinleştir seçeneğini açmalısınız.
NotMetin, uzun tamsayı ve çift duyarlıklı ondalık sayı türlerindeki alanlarda analitik özelliği bağımsız olarak etkinleştirilebilir. Bir alan, yalnızca bu alan için Enable Analytics seçeneğini açtıktan sonra SQL sorgularında WHERE yan tümcesi filtrelemesi, agregasyon analizi (SELECT/GROUP BY) ve görselleştirme amacıyla kullanılabilir. Analitik etkinleştirilmezse alan SQL sorgu analizinde çıkarılamayabilir veya null değeri döndürebilir.
Konsoldaki Anahtar/Değer Dizin Nitelikleri yapılandırma arayüzünde her alan satırında bir Enable Analytics anahtarı bulunur. Bu anahtar metin, uzun tamsayı ve çift duyarlıklı ondalık sayı alan türleri için bağımsız olarak kullanılabilir ve alan türü değiştiğinde kaybolmaz.
ÖnemliSimple Log Service'de varsayılan maksimum alan değeri uzunluğu 2 KB'dir (2.048 bayt). Bu sınırı aşan içerik kesilir ve dizine eklenmez ya da analiz edilmez. Bu durum Ham Günlüklerin toplanmasını veya raporlanmasını etkilemez.
Daha uzun alanları tam olarak analiz etmek için analiz edilen metin alanının maksimum uzunluğunu 16 KB'a kadar artırabilirsiniz. Bu sınırın artırılmasının SQL analizi performansı üzerindeki etkisi belgelenmemiştir. Etkiyi iş senaryonuzuna göre değerlendirin.
-
Bir alanın değerini yalnızca sayısal aralıkla sorgulamak istiyorsanız alanın veri türünü uzun tamsayı (long) veya çift duyarlıklı ondalık sayı (double) olarak ayarlayın. Bir alanın veri türünü uzun tamsayı veya çift duyarlıklı ondalık sayı olarak ayarlarsanız bu alanı asterisk (*) veya soru işareti (?) kullanarak sorgulayamazsınız. Joker karakterler bulanık eşleştirme yapmak için kullanılır.
Bir alanın değeri bir tamsayı ise alanın veri türünü uzun tamsayı (long) olarak ayarlayın.
Bir alanın değeri bir kayan noktalı sayı ise alanın veri türünü çift duyarlıklı ondalık sayı (double) olarak ayarlayın. Aksi takdirde alanı sorgulayamazsınız.
Bir alanın veri türünü uzun tamsayı veya çift duyarlıklı ondalık sayı olarak ayarlarsanız ancak alanın değeri bir string ise bu alanı sorgulayamazsınız.
ÖnemliBir alanın değeri geçersiz bir sayısal değer ise alanı
not key > -1000000arama ifadesiyle sorgulayın. Bu ifade, alanın değerinin geçersiz bir sayısal değer olduğu günlükleri döndürür.-1000000değerini, günlüklerinizdeki alanın en küçük geçerli sayısal değerinden küçük veya ona eşit olan geçerli bir sayısal değerle değiştirin.
-
-
JSON türü: Bir alanın değeri JSON türündeyse dizin oluştururken alanın veri türünü JSON olarak ayarlayın.
-
JSON nesnelerindeki bir alanın veri türünü alan değerine göre uzun tamsayı (long), çift duyarlıklı ondalık sayı (double) veya metin (text) olarak ayarlayın ve alan için Analizi Etkinleştir seçeneğini açın. Analizi Etkinleştir seçeneğini açtıktan sonra SLS bu alanı sorgulamanıza ve analiz etmenize olanak tanır.
Automatically Index All Text Fields in JSON Field seçeneğini belirlerseniz JSON nesnelerindeki metin türündeki tüm alanlar için otomatik olarak dizinler oluşturulur. Dizinler oluşturulduktan sonra dizin trafiği oluşur.

-
Kısmen geçerli JSON biçimli veriler için SLS yalnızca verinin geçerli kısmını ayrıştırabilir.
Aşağıdaki örnek eksik bir JSON günlüğünü göstermektedir. SLS
content.remote_addr,content.request.request_lengthvecontent.request.request_methodalanlarını ayrıştırabilir.content: { remote_addr:"192.0.2.0" request: { request_length:"73" request_method:"GEÖnemliJSON nesnelerindeki yaprak düğümler için dizin oluşturabilirsiniz. Yaprak düğümler içeren alt düğümler için dizin oluşturamazsınız.
Değerleri JSON dizileri olan alanlar veya bir JSON dizisi içindeki alanlar için dizin oluşturamazsınız.
Bir alanın değeri Boolean türündeyse dizin oluştururken alanın veri türünü metin (text) olarak ayarlayabilirsiniz.
Bir sorgu ifadesi
Arama ifadesi|Analiz ifadesibiçimindedir. Bir analiz ifadesinde alan adını çift tırnak ("") içine, string'i tek tırnak ('') içine almanız gerekir.
-
Başvuru kaynakları
JSON günlüklerinin sorgulanması ve analiziyle ilgili senaryolar ve SSS hakkında daha fazla bilgi için bkz. JSON günlüklerini sorgulama ve analiz etme ile ilgili SSS. SSS; dizin oluşturma, dizine eklenen JSON alanlarını sorgulama ve analiz etme, JSON işlevlerini kullanma ve JSON dizilerini analiz etme konularında bilgiler içermektedir.
JSON günlüklerinin sorgulanması ve analiziyle ilgili yapılandırmalar ve yordamlar hakkında daha fazla bilgi için bkz. JSON günlüklerini sorgulama ve analiz etme.
Sorgulamak ve analiz etmek istediğiniz JSON günlüklerinin veri hacmi küçükse JSON yaprak düğümleri için dizin oluşturmanıza gerek yoktur. Günlükleri sorgulamak ve analiz etmek için JSON işlevlerini kullanın. Belirli kullanım durumlarında sorgulama ve analiz için yalnızca JSON işlevlerini kullanabilirsiniz. JSON işlevlerinin kullanımı hakkında daha fazla bilgi için bkz. JSON işlevlerinin ne zaman kullanılacağı JSON işlevlerinin açıklamaları ve örnekleri hakkında daha fazla bilgi için bkz. JSON işlevleri.
-
Normal alanlardan farklı olarak tarih ve saat aralıkları dizinli alanlar olarak yapılandırılamaz. Günlükleri sorgulamak için konsolda Zaman Aralığı kullanarak bir zaman aralığını manuel olarak belirtin.
Yordam
SLS konsolunda dizin oluşturun. Daha fazla bilgi için bkz. Dizin oluşturma.
-
Dizin oluştururken alanlar için veri türlerini seçin.
Metin, uzun tamsayı ve çift duyarlıklı ondalık sayı türleri
Örnek günlük

Dizin yapılandırmaları

-
Örnek sorgu ifadeleri
İstek süresi 60 saniyeden büyük olan günlükleri sorgulamak için aşağıdaki ifadeyi yürütün:
request_time > 60İstek süresi 60 saniyeye eşit veya bundan büyük ancak 200 saniyeden küçük olan günlükleri sorgulamak için aşağıdaki ifadelerden birini yürütün:
request_time in [60 200)verequest_time >= 60 and request_time < 200.İstek durum kodu 200 olan günlükleri sorgulamak için aşağıdaki ifadeyi yürütün:
status = 200.GET isteklerini kaydetmeyen günlükleri sorgulamak için aşağıdaki ifadeyi yürütün:
not request_method : GET.Belirli kelimeleri içeren ve kelimelerin cn ile başladığı günlükleri sorgulamak için aşağıdaki ifadeyi yürütün:
cn*.İstemci dağıtım istatistiklerini toplamak için aşağıdaki ifadeyi yürütün:
* | SELECT ip_to_province(client_ip) as province, count(*) AS pv GROUP BY province ORDER BY pv.
JSON türü
-
Örnek günlük
Aşağıdaki görsel bir JSON günlüğü örneği sunmaktadır. Günlük
class,latency,statusveinfoalanlarını ve SLS'nin ayrılmış alanlarını içerir.infoalanının değeri birden çok katman içeren bir JSON nesnesidir.
-
Dizin yapılandırmaları

Aşağıdaki listede daha fazla ayrıntı verilmiştir:
IPvedataalanlarının değerleri JSON dizileridir. Bu nedenleIPveyadataalanı için dizin oluşturamazsınız ve bu alanları kullanarak verileri sorgulayamaz veya analiz edemezsiniz.regionveCreateTimealanları bir JSON dizisi içindedir. Bu nedenleregionveyaCreateTimealanı için dizin oluşturamazsınız ve bu alanları kullanarak verileri sorgulayamaz veya analiz edemezsiniz.
-
Örnek sorgu ifadeleri
usedTimealanının değeri 60 saniyeden büyük olan günlükleri sorgulamak için aşağıdaki ifadeyi yürütün:info.usedTime > 60.successalanının değeritrueolan günlükleri sorgulamak için aşağıdaki ifadeyi yürütün:info.success : true.usedTimealanının değeri 60 saniyeden büyük veprojectNamealanının değeriproject01olmayan günlükleri sorgulamak için aşağıdaki ifadeyi yürütün:info.usedTime > 60 not info.param.projectName : project01.Proje bilgilerini almak için gereken ortalama süreyi hesaplamak için aşağıdaki ifadeyi yürütün:
methodName = getProjectInfo | SELECT avg("info.usedTime") AS avg_time.
Dizinleri yapılandırırken aşağıdaki kurallara dikkat edin:
Tam Metin Dizini ve Anahtar/Değer Dizin niteliklerinden en az birini etkinleştirmelisiniz.
Alan düzeyindeki dizin yapılandırmaları, Tam Metin Dizini'ndeki aynı ada sahip alan ayarlarını geçersiz kılar. Örneğin, bir alan Tam Metin Dizini'nde tam metin belirteçli arama için yapılandırılmışsa ancak bu alan için Anahtar/Değer Dizini'nde ayrı bir tür ve özellik yapılandırırsanız Anahtar/Değer Dizini yapılandırması öncelik kazanır.
Alan türü uzun tamsayı (long) veya çift duyarlıklı ondalık sayı (double) olduğunda Büyük/Küçük Harfe Duyarlı ve Belirteç özellikleri etkili olmaz.
Dizin saklama süresini yalnızca azaltabilirsiniz.
Dizin yapılandırma değişiklikleri (alan ekleme, türleri değiştirme ve istatistik/sorgu anahtarlarını etkinleştirme dahil) yaklaşık 1 dakika sonra etkili olur ancak yalnızca dizin etkin olduktan sonra yazılan yeni veriler için geçerlidir. Geçmiş verileri sorgulamak için verileri yeniden dizinlemeniz gerekir. Daha fazla bilgi için bkz. Verileri yeniden dizinleme.
Yeniden dizinleme yalnızca son 30 güne ait ve en az 15 dakika eski verileri destekler.