Ana içeriğe geç

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>
Bilgi
  • 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ı

Uyarı
  • 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.

Not
  • 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