This article explains why the ID field in sp_portal records can be empty most of the times.
Empty ID values in Service Portal Log records
Broadly speaking an expected behaviour.
The only time that this field will be populated is when a user searching for something on Service Portal clicks on the results returned from the typeahead search dropdown and goes to the result directly.
If the user types in a query and press enter or clicks on the search icon and navigate to the search result page, then the ID field will not be populated and will remain empty.
Below is are examples of the two scenarios explained above and the resulting entries in sp_log: