Skip to content

Commit

Permalink
Fixed query DSL match that supports a field name and value.
Browse files Browse the repository at this point in the history
Signed-off-by: dblock <[email protected]>
  • Loading branch information
dblock committed Jul 11, 2024
1 parent 1a73935 commit 17c2b98
Show file tree
Hide file tree
Showing 4 changed files with 246 additions and 5 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
- Fixed `_source` in `bulk` responses ([#375](https://github.com/opensearch-project/opensearch-api-specification/pull/375))
- Fixed `/{index}/_dangling` that can return `nodes` and `cluster_name` ([#391](https://github.com/opensearch-project/opensearch-api-specification/pull/391))
- Fixed `Metadata` schema ([#399](https://github.com/opensearch-project/opensearch-api-specification/pull/399))
- Fixed query DSL `match` that supports a field name and value ([#405](https://github.com/opensearch-project/opensearch-api-specification/pull/405))

### Security

Expand Down
15 changes: 10 additions & 5 deletions spec/schemas/_common.query_dsl.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -69,11 +69,16 @@ components:
description: |-
Returns documents that match a provided text, number, date or boolean value.
The provided text is analyzed before matching.
type: object
additionalProperties:
$ref: '#/components/schemas/MatchQuery'
minProperties: 1
maxProperties: 1
anyOf:
- type: object
additionalProperties:
$ref: '#/components/schemas/MatchQuery'
minProperties: 1
maxProperties: 1
- type: object
additionalProperties: true
minProperties: 1
maxProperties: 1
match_all:
$ref: '#/components/schemas/MatchAllQuery'
match_bool_prefix:
Expand Down
212 changes: 212 additions & 0 deletions tests/_core/reindex.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,212 @@
$schema: ../../json_schemas/test_story.schema.yaml

description: Test reindex.
epilogues:
- path: /movies
method: DELETE
status: [200, 404]
- path: /films
method: DELETE
status: [200, 404]
- path: /videos
method: DELETE
status: [200, 404]
- path: /_ingest/pipeline/transform-and-count
method: DELETE
status: [200, 404]
chapters:
- synopsis: Create a document.
path: /{index}/_doc
method: POST
parameters:
index: movies
request_body:
payload:
title: Beauty and the Beast
year: 91
response:
status: 201
- synopsis: Refresh the index.
path: /{index}/_refresh
method: POST
parameters:
index: movies
- synopsis: Reindex from movies to films.
path: /_reindex
method: POST
request_body:
payload:
source:
index: movies
dest:
index: films
response:
status: 200
payload:
total: 1
- synopsis: Reindex a subset of documents (match).
path: /_reindex
method: POST
request_body:
payload:
source:
index: movies
query:
match:
title: Beauty and the Beast
dest:
index: films
response:
status: 200
payload:
total: 1
- synopsis: Reindex a subset of documents (no match).
path: /_reindex
method: POST
request_body:
payload:
source:
index: movies
query:
match:
title: Does not Exist
dest:
index: films
response:
status: 200
payload:
total: 0
- synopsis: Combine two indexes.
path: /_reindex
method: POST
request_body:
payload:
source:
index:
- movies
- films
dest:
index: videos
response:
status: 200
payload:
total: 1
- synopsis: Reindex only unique documents.
path: /_reindex
method: POST
request_body:
payload:
conflicts: proceed
source:
index: movies
dest:
index: videos
op_type: create
response:
status: 200
payload:
total: 1
- synopsis: Transform documents during reindex.
path: /_reindex
method: POST
request_body:
payload:
source:
index: movies
dest:
index: videos
script:
lang: painless
source: ctx._source.year += 1900
response:
status: 200
payload:
total: 1
- synopsis: Create an ingest pipeline.
path: /_ingest/pipeline/{id}
method: PUT
parameters:
id: transform-and-count
request_body:
payload:
description: |
Splits the `title`` field into a `words` list.
Computes the length of the title field and stores it in a new `length` field.
Removes the `year` field.
processors:
- split:
field: title
separator: '\s+'
target_field: words
- script:
lang: painless
source: 'ctx.length = ctx.words.length'
- remove:
field: year
- synopsis: Transform documents using a pipeline.
path: /_reindex
method: POST
request_body:
payload:
source:
index: movies
dest:
index: videos
pipeline: transform-and-count
response:
status: 200
- synopsis: Refresh the index.
path: /{index}/_refresh
method: POST
parameters:
index: videos
- synopsis: Get all videos.
path: /{index}/_search
method: POST
parameters:
index: videos
request_body:
payload:
query:
match_all: {}
response:
status: 200
payload:
hits:
hits:
- _index: videos
_source:
words:
- Beauty
- and
- the
- Beast
length: 4
title: Beauty and the Beast
- synopsis: Update documents in the current index.
path: /{index}/_update_by_query
method: POST
parameters:
index: videos
response:
status: 200
payload:
updated: 1
- synopsis: Reindex from movies to films with all options.
path: /_reindex
method: POST
parameters:
max_docs: 1
slices: 1
request_body:
payload:
source:
index: movies
size: 1
dest:
index: films
version_type: internal
response:
status: 200
payload:
total: 1
23 changes: 23 additions & 0 deletions tests/_core/search.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,29 @@ chapters:
director: Bennett Miller
title: Moneyball
year: 2011
- synopsis: Search with a match query object.
path: /{index}/_search
parameters:
index: movies
method: POST
request_body:
payload:
size: 1
query:
match:
director:
query: Bennett Miller
- synopsis: Search with a match query field.
path: /{index}/_search
parameters:
index: movies
method: POST
request_body:
payload:
size: 1
query:
match:
director: Bennett Miller
- synopsis: Search with multi_match query.
path: /{index}/_search
parameters:
Expand Down

0 comments on commit 17c2b98

Please sign in to comment.