All Apps and Add-ons

Levenshtein Search Command incomplete results and work with tstats

starcher
Influencer

The following changes will make the command work reliably in a larger environment.

  1. Fix to allow tstats to work with the command:
    Edit line 30 in the levenshtein.py in bin: replace the if '_raw' in r with the following.
    if string1 in r and string2 in r:

  2. Add to commands.conf:
    retainsevents=true
    streaming=true

If you make the above changes you will be able to use the command with tstats across data models like the Network Resolution for DNS queries. This will perform much faster due to accelerated data models over normal SPL index=... sourcetype=... type searches.

1 Solution

starcher
Influencer

Use this diff to patch for the above changes if you do not want to do it by hand.

*** old/bin/levenshtein.py      2014-11-11 14:49:21.000000000 -0600
--- new/bin/levenshtein.py      2016-03-14 20:01:06.000000000 -0500
***************
*** 27,33 ****
      results,dummyresults,settings = splunk.Intersplunk.getOrganizedResults()

      for r in results:
!         if "_raw" in r:
              if command=="ratio":
                  ratio=Levenshtein.ratio(r[string1], r[string2])
                  r["ratio"]=ratio
--- 27,33 ----
      results,dummyresults,settings = splunk.Intersplunk.getOrganizedResults()

      for r in results:
!         if string1 in r and string2 in r:
              if command=="ratio":
                  ratio=Levenshtein.ratio(r[string1], r[string2])
                  r["ratio"]=ratio
diff -rc old/default/commands.conf new/default/commands.conf
*** old/default/commands.conf   2014-11-05 12:44:12.000000000 -0600
--- new/default/commands.conf   2016-03-14 20:01:44.000000000 -0500
***************
*** 1,2 ****
--- 1,4 ----
  [levenshtein]
  filename=levenshtein.py
+ retainsevents=true
+ streaming=true

View solution in original post

tjbaker72
Explorer

I had to make the recommended change for the stats command as well.

The author, Nimesh Doshi, appears to be a Splunk employee. How can we get a new revision of the command created with the update? I couldn't find the source on githib...

0 Karma

starcher
Influencer

Use this diff to patch for the above changes if you do not want to do it by hand.

*** old/bin/levenshtein.py      2014-11-11 14:49:21.000000000 -0600
--- new/bin/levenshtein.py      2016-03-14 20:01:06.000000000 -0500
***************
*** 27,33 ****
      results,dummyresults,settings = splunk.Intersplunk.getOrganizedResults()

      for r in results:
!         if "_raw" in r:
              if command=="ratio":
                  ratio=Levenshtein.ratio(r[string1], r[string2])
                  r["ratio"]=ratio
--- 27,33 ----
      results,dummyresults,settings = splunk.Intersplunk.getOrganizedResults()

      for r in results:
!         if string1 in r and string2 in r:
              if command=="ratio":
                  ratio=Levenshtein.ratio(r[string1], r[string2])
                  r["ratio"]=ratio
diff -rc old/default/commands.conf new/default/commands.conf
*** old/default/commands.conf   2014-11-05 12:44:12.000000000 -0600
--- new/default/commands.conf   2016-03-14 20:01:44.000000000 -0500
***************
*** 1,2 ****
--- 1,4 ----
  [levenshtein]
  filename=levenshtein.py
+ retainsevents=true
+ streaming=true
Get Updates on the Splunk Community!

.conf24 | Registration Open!

Hello, hello! I come bearing good news: Registration for .conf24 is now open!   conf is Splunk’s rad annual ...

ICYMI - Check out the latest releases of Splunk Edge Processor

Splunk is pleased to announce the latest enhancements to Splunk Edge Processor.  HEC Receiver authorization ...

Introducing the 2024 SplunkTrust!

Hello, Splunk Community! We are beyond thrilled to announce our newest group of SplunkTrust members!  The ...