Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add sort and collapse info to SearchHits transport serialization #36555

Merged
merged 9 commits into from
Dec 14, 2018

Conversation

javanna
Copy link
Member

@javanna javanna commented Dec 12, 2018

In order for CCS alternate execution mode (see #32125) to be able to do the final reduction step on the CCS coordinating node, we need to serialize additional info in the transport layer as part of the SearchHits, specifically:

  • lucene SortField[] which contains info about the fields that sorting was performed on and their type, which depends on mappings (that the CCS node does not know about)
  • collapse field (String) that field collapsing was executed on, if requested
  • collapse values (Object[]) that field collapsing was based on, if requested

This info is needed to be able to reconstruct the TopFieldDocs or CollapseFieldTopDocs in the CCS coordinating node to feed the mergeTopDocs method and reduce multiple search responses received (one per cluster) into one.

This PR adds such information to the SearchHits class. It's nullable info that is not serialized through the REST layer. SearchPhaseController sets such info at the end of the hits reduction phase.

@javanna javanna added >enhancement :Search/Search Search-related issues that do not fall into other categories v7.0.0 v6.6.0 labels Dec 12, 2018
@elasticmachine
Copy link
Collaborator

Pinging @elastic/es-search

@javanna
Copy link
Member Author

javanna commented Dec 12, 2018

retest this please

Copy link
Contributor

@s1monw s1monw left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

left some nits. nice set of tests!!

@@ -577,6 +564,21 @@ public static SortField readSortField(StreamInput in) throws IOException {
return sortField;
}

public static SortField[] readSortFields(StreamInput in) throws IOException {
SortField[] fields = new SortField[in.readVInt()];
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can't you use writeArray with a writer? I think that would be good instead of iterating manually. same on teh read end

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes, not sure why I missed this ;P

@javanna javanna force-pushed the enhancement/search_hits_add_info branch from 03e4965 to 0bc1858 Compare December 14, 2018 09:36
@javanna javanna merged commit 7dc3d3b into elastic:master Dec 14, 2018
javanna added a commit to javanna/elasticsearch that referenced this pull request Dec 17, 2018
javanna added a commit to javanna/elasticsearch that referenced this pull request Dec 18, 2018
…stic#36555)

In order for CCS alternate execution mode (see elastic#32125) to be able to do the final reduction step on the CCS coordinating node, we need to serialize additional info in the transport layer as part of the `SearchHits`, specifically:

- lucene `SortField[]` which contains info about the fields that sorting was performed on and their type, which depends on mappings (that the CCS node does not know about)
- collapse field (`String`) that field collapsing was executed on, if requested
- collapse values (`Object[]`) that field collapsing was based on, if requested

This info is needed to be able to reconstruct the `TopFieldDocs` or `CollapseFieldTopDocs` in the CCS coordinating node to feed the `mergeTopDocs` method and reduce multiple search responses received (one per cluster) into one.

This commit adds such information to the `SearchHits` class. It's nullable info that is not serialized through the REST layer. `SearchPhaseController` sets such info at the end of the hits reduction phase.
javanna added a commit that referenced this pull request Dec 18, 2018
)

In order for CCS alternate execution mode (see #32125) to be able to do the final reduction step on the CCS coordinating node, we need to serialize additional info in the transport layer as part of the `SearchHits`, specifically:

- lucene `SortField[]` which contains info about the fields that sorting was performed on and their type, which depends on mappings (that the CCS node does not know about)
- collapse field (`String`) that field collapsing was executed on, if requested
- collapse values (`Object[]`) that field collapsing was based on, if requested

This info is needed to be able to reconstruct the `TopFieldDocs` or `CollapseFieldTopDocs` in the CCS coordinating node to feed the `mergeTopDocs` method and reduce multiple search responses received (one per cluster) into one.

This commit adds such information to the `SearchHits` class. It's nullable info that is not serialized through the REST layer. `SearchPhaseController` sets such info at the end of the hits reduction phase.
javanna added a commit that referenced this pull request Dec 18, 2018
Now that #36555 is backported to 6.x, the version in the transport serialization conditionals for sort and collapse info can be updated to 6.6.0
jasontedor added a commit to jasontedor/elasticsearch that referenced this pull request Dec 18, 2018
* elastic/master: (31 commits)
  enable bwc tests and switch transport serialization version to 6.6.0 for CAS features
  [DOCs] Adds ml-cpp PRs to alpha release notes (elastic#36790)
  Synchronize WriteReplicaResult callbacks (elastic#36770)
  Add CcrRestoreSourceService to track sessions (elastic#36578)
  [Painless] Add tests for boxed return types (elastic#36747)
  Internal: Remove originalSettings from Node (elastic#36569)
  [ILM][DOCS] Update ILM API authorization docs (elastic#36749)
  Core: Deprecate use of scientific notation in epoch time parsing (elastic#36691)
  [ML] Merge the Jindex master feature branch (elastic#36702)
  Tests: Mute SnapshotDisruptionIT.testDisruptionOnSnapshotInitialization
  Update versions in SearchSortValues transport serialization
  Update version in SearchHits transport serialization
  [Geo] Integrate Lucene's LatLonShape (BKD Backed GeoShapes) as default `geo_shape` indexing approach (elastic#36751)
  [Docs] Fix error in Common Grams Token Filter (elastic#36774)
  Fix rollup search statistics (elastic#36674)
  SQL: Fix wrong appliance of StackOverflow limit for IN (elastic#36724)
  [TEST] Added more logging
  Invalidate Token API enhancements - HLRC (elastic#36362)
  Deprecate types in index API (elastic#36575)
  Disable bwc tests until elastic#36555 backport is complete (elastic#36737)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
>enhancement :Search/Search Search-related issues that do not fall into other categories v6.6.0 v7.0.0-beta1
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants