hollow/src/main/java/com/netflix/hollow/core/index/HollowPrimaryKeyIndex.java
public int getMatchingOrdinal(Object... keys) {
        PrimaryKeyIndexHashTable hashTable = hashTableVolatile;
        if(fieldPathIndexes.length != keys.length || hashTable.bitsPerElement == 0)
            return -1;

        int hashCode = 0;
        for(int i=0;i<keys.length;i++)
            hashCode ^= keyHashCode(keys[i], i);

        int ordinal = -1;

        do {
            hashTable = this.hashTableVolatile;
            int bucket = hashCode & hashTable.hashMask;
            ordinal = readOrdinal(hashTable, bucket);
            while(ordinal != -1) {
                if(keyDeriver.keyMatches(ordinal, keys))
                    break;

                bucket++;
                bucket &= hashTable.hashMask;
                ordinal = readOrdinal(hashTable, bucket);
            }
        } while(hashTableVolatile != hashTable);

        return ordinal;
    }
public int getMatchingOrdinal(Object... keys) {
        PrimaryKeyIndexHashTable hashTable = hashTableVolatile;
        if(fieldPathIndexes.length != keys.length || hashTable.bitsPerElement == 0)
            return -1;

        int hashCode = 0;
        for(int i=0;i<keys.length;i++)
            hashCode ^= keyHashCode(keys[i], i);

        int ordinal = -1;

        do {
            hashTable = this.hashTableVolatile;
            int bucket = hashCode & hashTable.hashMask;
            ordinal = readOrdinal(hashTable, bucket);
            while(ordinal != -1) {
                if(keyDeriver.keyMatches(ordinal, keys))
                    break;

                bucket++;
                bucket &= hashTable.hashMask;
                ordinal = readOrdinal(hashTable, bucket);
            }
        } while(hashTableVolatile != hashTable);

        return ordinal;
    }
public int getMatchingOrdinal ( Object ... keys ) { PrimaryKeyIndexHashTable hashTable = hashTableVolatile ; if ( fieldPathIndexes . length != keys . length || hashTable . bitsPerElement == 0 ) return - 1 ; int hashCode = 0 ; for ( int i = 0 ; i < keys . length ; i ++ ) hashCode ^= keyHashCode ( keys [ i ] , i ) ; int ordinal = - 1 ; do { hashTable = this . hashTableVolatile ; int bucket = hashCode & hashTable . hashMask ; ordinal = readOrdinal ( hashTable , bucket ) ; while ( ordinal != - 1 ) { if ( keyDeriver . keyMatches ( ordinal , keys ) ) break ; bucket ++ ; bucket &= hashTable . hashMask ; ordinal = readOrdinal ( hashTable , bucket ) ; } } while ( hashTableVolatile != hashTable ) ; return ordinal ; }
Query an index with four or more specified fields.  The returned value with be the ordinal of the matching record.
<p>
Use a generated API or the Generic Object API to use the returned ordinal.

@param keys the field keys
@return the matching ordinal for the keys, otherwise -1 if the key is not present
Query an index with four or more specified fields . The returned value with be the ordinal of the matching record . <p > Use a generated API or the Generic Object API to use the returned ordinal .