GroupField: Change UUID fields' type to KEYWORD
This is a preparatory change for adding support for Elasticsearch version 5, where handling of keyword types is changed. For the Lucene index, handle KEYWORD the same way as EXACT. For Elasticsearch, also handle both KEYWORD and EXACT in the same way since at this point we don't yet support Elasticsearch 5. Change-Id: I545c3ce85b44f6f640c51afd22ba3c663ff6ba80
This commit is contained in:
parent
506125e71a
commit
09fdc3eaad
@ -26,7 +26,7 @@ class ElasticMapping {
|
||||
for (FieldDef<?, ?> field : schema.getFields().values()) {
|
||||
String name = field.getName();
|
||||
FieldType<?> fieldType = field.getType();
|
||||
if (fieldType == FieldType.EXACT) {
|
||||
if (fieldType == FieldType.EXACT || fieldType == FieldType.KEYWORD) {
|
||||
mapping.addExactField(name);
|
||||
} else if (fieldType == FieldType.TIMESTAMP) {
|
||||
mapping.addTimestamp(name);
|
||||
|
@ -94,7 +94,7 @@ public class ElasticQueryBuilder {
|
||||
return intRangeQuery(p);
|
||||
} else if (type == FieldType.TIMESTAMP) {
|
||||
return timestampQuery(p);
|
||||
} else if (type == FieldType.EXACT) {
|
||||
} else if (type == FieldType.EXACT || type == FieldType.KEYWORD) {
|
||||
return exactQuery(p);
|
||||
} else if (type == FieldType.PREFIX) {
|
||||
return QueryBuilders.matchPhrasePrefixQuery(name, value);
|
||||
|
@ -141,20 +141,21 @@ public class QueryBuilder<V> {
|
||||
"field not in schema v%s: %s",
|
||||
schema.getVersion(),
|
||||
p.getField().getName());
|
||||
if (p.getType() == FieldType.INTEGER) {
|
||||
FieldType<?> type = p.getType();
|
||||
if (type == FieldType.INTEGER) {
|
||||
return intQuery(p);
|
||||
} else if (p.getType() == FieldType.INTEGER_RANGE) {
|
||||
} else if (type == FieldType.INTEGER_RANGE) {
|
||||
return intRangeQuery(p);
|
||||
} else if (p.getType() == FieldType.TIMESTAMP) {
|
||||
} else if (type == FieldType.TIMESTAMP) {
|
||||
return timestampQuery(p);
|
||||
} else if (p.getType() == FieldType.EXACT) {
|
||||
} else if (type == FieldType.EXACT || type == FieldType.KEYWORD) {
|
||||
return exactQuery(p);
|
||||
} else if (p.getType() == FieldType.PREFIX) {
|
||||
} else if (type == FieldType.PREFIX) {
|
||||
return prefixQuery(p);
|
||||
} else if (p.getType() == FieldType.FULL_TEXT) {
|
||||
} else if (type == FieldType.FULL_TEXT) {
|
||||
return fullTextQuery(p);
|
||||
} else {
|
||||
throw FieldType.badFieldType(p.getType());
|
||||
throw FieldType.badFieldType(type);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -17,6 +17,7 @@ package com.google.gerrit.server.index.group;
|
||||
import static com.google.gerrit.server.index.FieldDef.exact;
|
||||
import static com.google.gerrit.server.index.FieldDef.fullText;
|
||||
import static com.google.gerrit.server.index.FieldDef.integer;
|
||||
import static com.google.gerrit.server.index.FieldDef.keyword;
|
||||
import static com.google.gerrit.server.index.FieldDef.prefix;
|
||||
|
||||
import com.google.gerrit.reviewdb.client.AccountGroup;
|
||||
@ -31,11 +32,11 @@ public class GroupField {
|
||||
|
||||
/** Group UUID. */
|
||||
public static final FieldDef<AccountGroup, String> UUID =
|
||||
exact("uuid").stored().build(g -> g.getGroupUUID().get());
|
||||
keyword("uuid").stored().build(g -> g.getGroupUUID().get());
|
||||
|
||||
/** Group owner UUID. */
|
||||
public static final FieldDef<AccountGroup, String> OWNER_UUID =
|
||||
exact("owner_uuid").build(g -> g.getOwnerGroupUUID().get());
|
||||
keyword("owner_uuid").build(g -> g.getOwnerGroupUUID().get());
|
||||
|
||||
/** Group name. */
|
||||
public static final FieldDef<AccountGroup, String> NAME =
|
||||
|
Loading…
Reference in New Issue
Block a user