# Values from grouped fields are copied into the group field.
# Here we make some assumptions about the general purpose of
# each group.
+ # Note the ignore_above only affects the 'keyword' version of the
+ # field, the assumption being text that large would solely be
+ # searched via 'text' indexes.
title => {
type => 'keyword',
+ ignore_above => 256,
normalizer => 'custom_lowercase',
fields => {
text => {type => 'text'},
},
author => {
type => 'keyword',
+ ignore_above => 256,
normalizer => 'custom_lowercase',
fields => {
text => {type => 'text'},
},
subject => {
type => 'keyword',
+ ignore_above => 256,
normalizer => 'custom_lowercase',
fields => {
text => {type => 'text'},
},
series => {
type => 'keyword',
+ ignore_above => 256,
normalizer => 'custom_lowercase',
fields => {
text => {type => 'text'},
# keyword field, but we index it just the same (sans lowercase)
# for structural consistency with other group fields.
type => 'keyword',
+ ignore_above => 256,
fields => {
text => {type => 'text'},
text_folded => {type => 'text', analyzer => 'folding'}
identifier => {
# Avoid full-text indexing on identifier fields.
type => 'keyword',
+ ignore_above => 256,
normalizer => 'custom_lowercase',
},
se => {type => 'text'},
su => {type => 'text'},
kw => {type => 'text'},
- id => {type => 'keyword'}
+ id => {
+ type => 'keyword',
+ ignore_above => 256
+ }
};
my %SHORT_GROUP_MAP = (
$def = {
type => 'keyword',
+ ignore_above => 256,
normalizer => 'custom_lowercase'
};
}
if ($field->facet_field eq 't' && $def->{fields}) {
# Facet fields are used for aggregation which requires
# an additional unaltered keyword field.
- $def->{fields}->{facet} = {type => 'keyword'};
+ $def->{fields}->{facet} = {
+ type => 'keyword',
+ ignore_above => 256
+ };
}
$logger->debug("ES adding field $field_name: ".
$self->es->indices->put_mapping({
index => $INDEX_NAME,
type => 'record',
- body => {properties => {$field => $mappings->{$field}}}
+ body => {dynamic => 'false', properties => {$field => $mappings->{$field}}}
});
};