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

Integrate with JSONPath; complete input transform (ingest) #229

Merged
merged 5 commits into from
Jul 22, 2024

Conversation

ohltyler
Copy link
Member

Description

This PR completes the end-to-end flow of input transforms on the ingest side, by way of adding JSONPath parsing support within the ML inference input map configs. More specifically:

  • adds MIT-licensed JSONPath (base JS and TS) packages to the plugin
  • finishes base functionality of InputTransformModal - adds the map form field within the modal, completes generation logic of the output JSON after applying JSONPath and/or dot notation to the specified inputs in the map. Note the logic used here is the same as the ML inference processor logic, when parsing the map config. If no $. JSONPath base object selector is specified, it defaults to using dot notation. We do the same logic to produce consistent results when actually used in the ML inference processor
  • removes cancel/save of InputTransformModal to just be close, since the autosave will handle it
  • adds simple/advanced toggle in the ML processor form inputs component, refactors some of the buttons and map field inputs based on simple vs. advanced being selected
  • adds keyPlaceholder/valuePlaceholder props to MapField to be able to reuse in the output maps and for other contexts (ingest / search req / search resp) later on

Testing

  • confirmed consistent parsing for dot notation / JSONPath / invalid inputs and combinations of all of them, when input in the transform modal, and when actually executed in the processor with an ingest command

Demo video, showing end-to-end flow of configuring an ML inference processor's input_map using both dot notation and JSONPath, getting sample results in the advanced transform modal, and finally running a concrete ingest command against the configured processor:

screen-capture.8.webm

Issues Resolved

Makes progress on #23

Check List

  • Commits are signed per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

label="Input map"
helpText={`An array specifying how to map fields from the ingested document to the model’s input.`}
helpLink={
'https://opensearch.org/docs/latest/ingest-pipelines/processors/ml-inference/#configuration-parameters'
Copy link
Member

Choose a reason for hiding this comment

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

We should have the links in a common file or the constant file

Copy link
Member Author

Choose a reason for hiding this comment

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

Good point, will move in the next PR

@ohltyler ohltyler merged commit d490d15 into opensearch-project:main Jul 22, 2024
11 checks passed
@ohltyler ohltyler deleted the jsonpath branch July 22, 2024 21:55
opensearch-trigger-bot bot pushed a commit that referenced this pull request Jul 22, 2024
ohltyler added a commit that referenced this pull request Jul 22, 2024
Signed-off-by: Tyler Ohlsen <[email protected]>
(cherry picked from commit d490d15)

Co-authored-by: Tyler Ohlsen <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants