You could potentially write a script that does the difference and store that in Elasticsearch. Then when you created a scripted field you would call that function and pass it the two fields instead of writing that script. But that doesn't really save you any effort. You're still creating a scripted field for each permutation.
The other thing is that I think you could use the script like
doc['field1'].value - doc['field2'].value directly in a visualization without having to create a scripted field by using the Advanced JSON Input.
In my example below I made a Data Table visualization. I Split Rows by Terms and picked the
count field. Then I clicked on the Advanced link and put this in the JSON Input;
"script": "doc['count'].value + 100",
And I gave it a CustomLabel of
count + 100.
That by itself worked, but I Split Rows again and added the
count field again so you could see it's original value.
So you can get your diffs without having to create a scripted field. But I'm not sure if this is really any easier.