Splunk Search

How do you compare values between two fields from two separate indexes?

gbwilson
Path Finder

I'm trying to compare values between two fields from two separate indexes. I only want values returned where there is not a match to a value in the Ecom index.

I might have a table like this in the Ecom index:
small-service1
small-service2
small-service3

In my cms_application index I might have values like this:
small-service1
small-service2

I want to see small-service3 as the value returned since it IS in the Ecom index but NOT in the cms_application index. Can someone help me out? I'm only getting results that say NO MATCH and the entire column for ApplicationService is coming back blank. Thanks in advance.

(index=ecom* earliest="-60m@m" sourcetype=healthchecks)  OR (index=cms_application earliest="1" latest="now") 
 | rex mode=sed field=host "s/.us.company.com//g" | lookup hostsip hostname as host | search application=*api* | dedup microservice | fields microservice
 | streamstats count by microservice, ApplicationService
 | stats values(microservice) AS microservice, values(ApplicationService) AS ApplicationService
 | mvexpand microservice 
 | eval Status = if(match(microservice,ApplicationService), "MATCH", "NO MATCH") 
 | table microservice, ApplicationService, Status
 | where Status="NO MATCH"
0 Karma

woodcock
Esteemed Legend

Try this:

(index=ecom* earliest="-60m@m" sourcetype=healthchecks) OR (index=cms_application earliest="1" latest="now")
| rex mode=sed field=host "s/.us.company.com//g"
| lookup hostsip hostname as host
| search application=*api*
| eval microservice=coalesce(microservice, ApplicationService)
| stats values(index) AS index dc(index) AS indexCount BY microservice
| search indexCount=1 AND NOT index="Ecom"
0 Karma

harishalipaka
Motivator

You can use match or ==

Thanks
Harish
0 Karma

somesoni2
Revered Legend

Give this a try

(index=ecom* earliest="-60m@m" sourcetype=healthchecks) OR (index=cms_application earliest="1" latest="now") | rex mode=sed field=host "s/.us.company.com//g" | lookup hostsip hostname as host | search application=*api* 
| stats values(index) as indexes by microservice ApplicationService
| eval Status = case(mvcount(indexes)=2, "MATCH", like(indexes,"ecom%"),"NO MATCH", true(),"Service in CMS but not in ECOM") | table microservice, ApplicationService, Status | where Status="NO MATCH"
0 Karma
Got questions? Get answers!

Join the Splunk Community Slack to learn, troubleshoot, and make connections with fellow Splunk practitioners in real time!

Meet up IRL or virtually!

Join Splunk User Groups to connect and learn in-person by region or remotely by topic or industry.

Get Updates on the Splunk Community!

Announcing Modern Navigation: A New Era of Splunk User Experience

We are excited to introduce the Modern Navigation feature in the Splunk Platform, available to both cloud and ...

Best Practices: Splunk auto adjust pipeline queue

When you enable autoAdjustQueue in Splunk, maxSize should be understood as the queue size Splunk starts with ...

Request for Professional Development: Attending .conf26

Winning Over the Boss: Your Pass to .conf26 conf26 is going to be here before you know it. If don't already ...