You're right - the standard analyzer is wrong for your use case. You can see what the standard analyzer does on your URLs by using the _analyze API:
GET my_index/_analyze
{
"analyzer": "standard",
"text": [
"/page/setDelete/905?sid=f5a4875f7ee771174f1df1",
"/dashboard/dashboard/execute?sid=f5a4875f7ee771174f1df1&a_u=16432_79958"
]
}
The output shows you that for example setDelete and a_u=12345_6789 do not get broken up into separate tokens by the standard analyzer, preventing you from being able to search for just a_u=12345.
You'll need to create a custom analyzer to support your use case. The documentation has an example of a custom "camelcase" analyzer with a tokenizer that uses regular expressions to break up strings. That could be a good starting point for yours. Maybe something like this?
PUT my_index
{
"settings": {
"analysis": {
"analyzer": {
"my_analyzer": {
"type": "pattern",
"pattern": "([^\\p{L}\\d=]+)|(?<=[\\p{L}&&[^\\p{Lu}]])(?=\\p{Lu})|(?<=\\p{Lu})(?=\\p{Lu}[\\p{L}&&[^\\p{Lu}]])"
}
}
}
}
}
GET my_index/_analyze
{
"analyzer": "my_analyzer",
"text": [
"/page/setDelete/905?sid=f5a4875f7ee771174f1df1",
"/dashboard/dashboard/execute?sid=f5a4875f7ee771174f1df1&a_u=16432_79958"
]
}
Keep in mind that you cannot change the analyzer for existing fields in your mapping. You'll have to add a new multifield to your mapping, or create a new index, with a mapping that uses your new custom analyzer.