PPL Arama
Piped Processing Language (PPL), verilerin sıralı ve adım adım işlenmesine odaklanan bir sorgu dilidir. PPL, verileri bulmak ve almak için komutları birleştirmek amacıyla boru (|
) operatörünü kullanır. Gözlemlenebilirlik için kullanılan birincil dildir ve çoklu veri sorgularını destekler.
Aşağıdaki örnekte temel PPL sözdizimi gösterilmektedir:
search source=<index-name> | <command_1> | <command_2> | ... | <command_n>
- SQL ve PPL aynı uç noktayı kullansa da, PPL'de döndürülen veriler SQL'deki gibi JSON'da döndürülmez. Json dönüşü yalnızca SQL aramaları için geçerlidir. Sorgu parametresi olarak "format= json" seçilse bile, bu şekilde döndürülmez.
- Ppl aramasında sayfalama şu şekilde yapılır. "Head", kaç tane verinin görüntüleneceğini ve "from" ise hangi noktadan başlayacağını ifade eder.
sayfalama örneği:
search source =`c71c5cd51f_obsnew` | head 5 from 4
Temel PPL Sorguları
- Aşağıdaki çıktıların tamamı kullanıcıyı bilgilendirme amaçlı örneklerden oluşmaktadır.
Şema ve veri satırlarını sql'e benzer şekilde döndürür. Döndürülen cevapta, 'şema' olarak adlandırılan parçalar alanları, başka bir deyişle sütunları temsil eder. 'Veri satırı' bu alanlara karşılık gelen değerlerdir.
- Geri onay işaretinde takma ad veya indeks adı belirtilmelidir.
search source=`sample-index1`| head 5 from 4
Where ve Fields Kullanımı
Koşullar için fields
ve where
komutlarını kullanır.
search source=`sample-index1` | where gender='M' and age > 35| fields firstname, lastname, city, employer
Time ve Stats Kullanımı
Arama sonuçlarından toplama yapmak için stats
komutunu kullanın.
search source=`security-auditlog-2024.05.28` | where @timestamp >= '2024-05-29 04:16:28.165000' and @timestamp <= '2024-05-29 04:16:35.432000' | stats count() by span(@timestamp, 1s) as timestamp, patterns_field | AD time_field='timestamp' category_field='patterns_field'
Yaygın Fonksiyonlar
PPL
tüm SQL
ortak fonksiyonlarını destekler, ancak yalnızca PPL
'de bulunan birkaç fonksiyon (komutlar
olarak adlandırılır) daha sunar.
Örnek avg,sort
:
search source=`sample-index1` | stats avg(balance) as average_balance by state| sort -average_balance| head 5| fields state, average_balance
Örnek Dedup:
Dedup, yinelenen belgeleri kaldırmak için kullanılır.
Normalde 6'da bir belge olan Alias'ın 3 tekrarlayan verisi vardı. Dedup'ı kullanarak aramadaki veriyi 4'e düşürdük.
search source=`sample-index1`| dedup account_number
Örnek Eval:
İki farklı sütunu karşılaştırmak için kullanabiliriz, arama sonucuna yeni bir sütun ekleyebilir.
search source=`sample-index1` | eval interest_amount = account_balance * account_interest_rate | fields account_number, account_balance, account_interest_rate, interest_amount
search source=`sample-index1`| eval doublebalance = balance * 2 | fields balance, doublebalance
Örnek Ascending Order:
search source=`sample-index1` | sort +account_number
Örnek Desc Order:
search source=`c71c5cd51f_ozgenew` | sort -account_number
Örnek Fields:
Fields komutu, bir arama sonucunda hangi alanların görüntüleneceğini veya hariç tutulacağını belirler.
-
Sign +: Belirtilen alanın arama sonuçlarına dahil edilmesini sağlar. Aslında, varsayılan olarak, fields komutu + işaretine ihtiyaç duymadan bu şekilde çalışır. Bu nedenle, + işareti genellikle isteğe bağlı olarak kabul edilir ve yazılmasa bile aynı şeyi yapar.
-
Sign -: Belirtilen alanı arama sonuçlarından hariç tutar.
search source=`sample-index1` | fields + @timestamp
Örnek Head:
Belirtilen arama sırasındaki ilk N sayıda sonucu döndürmek için head komutunu kullanın.
search source=`sample-index1` | fields firstname, age | head 10
Örnek Time:
search source=`sample-index1` | where @timestamp >= '2023-01-01' AND @timestamp <= '2023-12-31' | fields firstname, age | head 10
Örnek Rare:
Bir alan listesindeki tüm alanlar arasında en az ortak olan değerleri bulmak için nadir
komutunu kullanın. Gruplama alanlarının her bir ayrı değer kümesi için en fazla 10 sonuç döndürülür.
search source=`sample-index1` | rare gender
Örnek Parse:
Bir metin alanını normal ifadeyi kullanarak ayrıştırmak ve sonucu arama sonucuna eklemek için parse
komutunu kullanın.
search source=`sample-index1` | parse message \"* Date: %{date}\
Örnek Rename:
‘Rename’ komutu, arama sonucundaki bir veya daha fazla alanı yeniden adlandırmak için kullanılır.
search source=`sample-index1` | rename account_number as an | fields an
Örnek Top:
Alan listesindeki tüm alanlar arasında en yaygın değerleri bulmak için top
komutunu kullanın.
search source=`sample-index1`|
rename `sample-index1` AS samp_i|
top limit=5 samp_i