About events and logs in Smart Contracts

Hey everyone!

I’m currently trying out the KVM capabilities and I can’t have a grasp on one topic.
What are indexed arguments in events? And why can’t I add more than one non-indexed data-argument to my event? Explainations are absent in the documentation and each and every code example I see contains only one non-indexed arg in events. So why do you need an indexed and non-indexed args?

E.g. I’m trying to emit following event, but the rust-analyzer does not let me do that…

    #[event("policy_created")]

    fn emit_policy_created(

        &self,

        #[indexed] policy_id: u64,

        #[indexed] owner: ManagedAddress,

        #[indexed] validator: ManagedAddress,

        payout: BigUint,

        premium: BigUint,

    );
error: custom attribute panicked
 --> src/foo_bar.rs:9:1
  |
9 | #[klever_sc::module]
  | ^^^^^^^^^^^^^^^^^^^^
  |
  = help: message: only 1 data argument allowed in event log

add #[indexed] to the others

#[event(“policy_created”)]
fn emit_policy_created(

    &self,

    #[indexed] policy_id: u64,

    #[indexed] owner: ManagedAddress,

    #[indexed] validator: ManagedAddress,

    #[indexed] payout: BigUint,

    #[indexed] premium: BigUint,

);