Choose postings format from FieldMapper instead of MappedFieldType#77234
Choose postings format from FieldMapper instead of MappedFieldType#77234romseygeek merged 4 commits intoelastic:masterfrom
Conversation
|
Pinging @elastic/es-distributed (Team:Distributed) |
|
Pinging @elastic/es-search (Team:Search) |
|
|
||
| @Override | ||
| public PostingsFormat postingsFormat() { | ||
| return PostingsFormat.forName("Completion84"); |
There was a problem hiding this comment.
Note: PostingsFormat.forName() does the same lazy-instantiation that the previous impl did
|
@elasticmachine run elasticsearch-ci/bwc |
|
@elasticmachine update branch |
| /** | ||
| * @return a PostingsFormat for this field, or {@code null} if the default postings should be used | ||
| */ | ||
| public PostingsFormat postingsFormat() { |
There was a problem hiding this comment.
I don't think we should reopen this capability for plugins. It was removed in #8746 and I don't think that the policy should change.
Can we make this change without exposing custom postings format in field mappers ?
There was a problem hiding this comment.
I've reworked things so that the MappingLookup detects completion mappers at build time and will return the relevant per-field postings format, removing the pluggability again.
jimczi
left a comment
There was a problem hiding this comment.
The change looks good thanks. Can you also modify the title of the PR to reflect the last changes.
💔 Backport failed
To backport manually run |
…77234) Currently we configure per-field postings formats by asking the MapperService for the MappedFieldType of the field in question, and then checking to see if it is a completion field. If no MappedFieldType is available, we emit a warning. However, MappedFieldTypes are for search fields only, and so we end up emitting warnings for hidden sub-fields that have no corresponding field type, such as prefix or phrase accelerator fields on text mappers. This commit reworks things so that the MappingLookup is responsible for defining per-field postings formats, and will detect CompletionFieldMappers at build time. All fields that are not mapped to a completion field will just get the default postings format. This also means that we no longer need a logger instance on CodecService. Fixes #77183
…77234) Currently we configure per-field postings formats by asking the MapperService for the MappedFieldType of the field in question, and then checking to see if it is a completion field. If no MappedFieldType is available, we emit a warning. However, MappedFieldTypes are for search fields only, and so we end up emitting warnings for hidden sub-fields that have no corresponding field type, such as prefix or phrase accelerator fields on text mappers. This commit reworks things so that the MappingLookup is responsible for defining per-field postings formats, and will detect CompletionFieldMappers at build time. All fields that are not mapped to a completion field will just get the default postings format. This also means that we no longer need a logger instance on CodecService. Fixes #77183
* master: (128 commits) Mute DieWithDignityIT (elastic#77283) Fix randomization in MlNodeShutdownIT (elastic#77281) Add target_node_name for REPLACE shutdown type (elastic#77151) [DOCS] Adds information about version compatibility headers (elastic#77096) Fix template equals when mappings are wrapped (elastic#77008) Fix TextFieldMapper Retaining a Reference to its Builder (elastic#77251) Move die with dignity to be a test module (elastic#77136) Update task names for rest compatiblity (elastic#75267) [ML] adjusting bwc serialization for elastic#77256 (elastic#77257) Move `index.hidden` from Static to Dynamic settings (elastic#77218) Handle cgroups v2 in `OsProbe` (elastic#77128) Choose postings format from FieldMapper instead of MappedFieldType (elastic#77234) Add segment sorter for data streams (elastic#75195) Update skip after backport (elastic#77212) [ML] adding new defer_definition_decompression parameter to put trained model API (elastic#77189) [ML] Fix bug in inference stats persister for when feature reset is called Only check replicas in cancelling existing recoveries. (elastic#60564) Format `AbstractFilteringTestCase` (elastic#77217) [DOCS] Fixes line breaks. (elastic#77248) Convert 'routing' values in REST API tests to strings ... # Conflicts: # server/src/main/java/org/elasticsearch/cluster/metadata/DataStream.java
Currently we configure per-field postings formats by asking the MapperService
for the MappedFieldType of the field in question, and then checking to see if it
is a completion field. If no MappedFieldType is available, we emit a warning.
However, MappedFieldTypes are for search fields only, and so we end up emitting
warnings for hidden sub-fields that have no corresponding field type, such as
prefix or phrase accelerator fields on text mappers.
This commit reworks things so that the MappingLookup is responsible for defining
per-field postings formats, and will detect CompletionFieldMappers at build time.
All fields that are not mapped to a completion field will just get the default postings
format. This also means that we no longer need a logger instance on CodecService.
Fixes #77183