I noticed when I tried your code - creating _raw, this worked. Note I fixed the "==" : | eval _raw="{\"build\":{\"build_id\":\"bubyut7oi7xlg\",\"cache\":{\"remote_enabled\":false}}}" | spath | eval check = if('build.cache.remote_enabled'=="false", "boolean", "string") | table check However when I use the _raw value (which is much larger than my small subset, it fails). I knew the _raw text was large, but I checked and I was surprised to see it was > 5K characters. I did try using spath with an input path to try and give it a more precise starting point, but I guess it doesn't work that way. So I'm sure that is why mine was failing. Your initial suggestion works fine by testing with quoted "false"! To work around my problem, I use this to extract the (fortunately unique) named value: index=gradle_enterprise_export sourcetype="gradle-export-app" message=build_saved env="prod" build.build_id="bubyut7oi7xlg" | rex field=_raw "\"remote_enabled\":(?P<remote_enabled>[^,]*)" | table remote_enabled Thanks for your suggestions. It helped!
... View more