409 lines
12 KiB
YAML
409 lines
12 KiB
YAML
# Integration tests for Lang JavaScript components
|
|
#
|
|
"JavaScript Query":
|
|
- do:
|
|
index:
|
|
index: test
|
|
type: test
|
|
id: 1
|
|
body: { "test": "value beck", "num1": 1.0 }
|
|
- do:
|
|
index:
|
|
index: test
|
|
type: test
|
|
id: 2
|
|
body: { "test": "value beck", "num1": 2.0 }
|
|
- do:
|
|
index:
|
|
index: test
|
|
type: test
|
|
id: 3
|
|
body: { "test": "value beck", "num1": 3.0 }
|
|
- do:
|
|
indices.refresh: {}
|
|
|
|
- do:
|
|
index: test
|
|
search:
|
|
body:
|
|
query:
|
|
script:
|
|
script:
|
|
inline: "doc['num1'].value > 1"
|
|
lang: js
|
|
script_fields:
|
|
sNum1:
|
|
lang: js
|
|
script: "doc['num1'].value"
|
|
sort:
|
|
num1:
|
|
order: asc
|
|
|
|
- match: { hits.total: 2 }
|
|
- match: { hits.hits.0.fields.sNum1.0: 2.0 }
|
|
- match: { hits.hits.1.fields.sNum1.0: 3.0 }
|
|
|
|
- do:
|
|
index: test
|
|
search:
|
|
body:
|
|
query:
|
|
script:
|
|
script:
|
|
inline: "doc['num1'].value > param1"
|
|
lang: js
|
|
params:
|
|
param1: 1
|
|
|
|
script_fields:
|
|
sNum1:
|
|
lang: js
|
|
script: "doc['num1'].value"
|
|
sort:
|
|
num1:
|
|
order: asc
|
|
|
|
- match: { hits.total: 2 }
|
|
- match: { hits.hits.0.fields.sNum1.0: 2.0 }
|
|
- match: { hits.hits.1.fields.sNum1.0: 3.0 }
|
|
|
|
- do:
|
|
index: test
|
|
search:
|
|
body:
|
|
query:
|
|
script:
|
|
script:
|
|
inline: "doc['num1'].value > param1"
|
|
lang: js
|
|
params:
|
|
param1: -1
|
|
|
|
script_fields:
|
|
sNum1:
|
|
lang: js
|
|
script: "doc['num1'].value"
|
|
sort:
|
|
num1:
|
|
order: asc
|
|
|
|
- match: { hits.total: 3 }
|
|
- match: { hits.hits.0.fields.sNum1.0: 1.0 }
|
|
- match: { hits.hits.1.fields.sNum1.0: 2.0 }
|
|
- match: { hits.hits.2.fields.sNum1.0: 3.0 }
|
|
|
|
|
|
---
|
|
|
|
"JavaScript Script Field Using Source":
|
|
- do:
|
|
index:
|
|
index: test
|
|
type: test
|
|
id: 1
|
|
body: {
|
|
"obj1": {
|
|
"test": "something"
|
|
},
|
|
"obj2": {
|
|
"arr2": [ "arr_value1", "arr_value2" ]
|
|
}
|
|
}
|
|
- do:
|
|
indices.refresh: {}
|
|
|
|
- do:
|
|
index: test
|
|
search:
|
|
body:
|
|
script_fields:
|
|
s_obj1:
|
|
lang: js
|
|
script: "_source.obj1"
|
|
s_obj1_test:
|
|
lang: js
|
|
script: "_source.obj1.test"
|
|
s_obj2:
|
|
lang: js
|
|
script: "_source.obj2"
|
|
s_obj2_arr2:
|
|
lang: js
|
|
script: "_source.obj2.arr2"
|
|
|
|
- match: { hits.total: 1 }
|
|
- match: { hits.hits.0.fields.s_obj1.0.test: something }
|
|
- match: { hits.hits.0.fields.s_obj1_test.0: something }
|
|
- match: { hits.hits.0.fields.s_obj2.0.arr2.0: arr_value1 }
|
|
- match: { hits.hits.0.fields.s_obj2.0.arr2.1: arr_value2 }
|
|
- match: { hits.hits.0.fields.s_obj2_arr2.0: arr_value1 }
|
|
- match: { hits.hits.0.fields.s_obj2_arr2.1: arr_value2 }
|
|
|
|
---
|
|
|
|
"JavaScript Custom Script Boost":
|
|
- do:
|
|
index:
|
|
index: test
|
|
type: test
|
|
id: 1
|
|
body: { "test": "value beck", "num1": 1.0 }
|
|
- do:
|
|
index:
|
|
index: test
|
|
type: test
|
|
id: 2
|
|
body: { "test": "value beck", "num1": 2.0 }
|
|
- do:
|
|
indices.refresh: {}
|
|
|
|
- do:
|
|
index: test
|
|
search:
|
|
body:
|
|
query:
|
|
function_score:
|
|
query:
|
|
term:
|
|
test: value
|
|
"functions": [{
|
|
"script_score": {
|
|
"script": {
|
|
"lang": "js",
|
|
"inline": "doc['num1'].value"
|
|
}
|
|
}
|
|
}]
|
|
|
|
- match: { hits.total: 2 }
|
|
- match: { hits.hits.0._id: "2" }
|
|
- match: { hits.hits.1._id: "1" }
|
|
|
|
- do:
|
|
index: test
|
|
search:
|
|
body:
|
|
query:
|
|
function_score:
|
|
query:
|
|
term:
|
|
test: value
|
|
"functions": [{
|
|
"script_score": {
|
|
"script": {
|
|
"lang": "js",
|
|
"inline": "-doc['num1'].value"
|
|
}
|
|
}
|
|
}]
|
|
|
|
- match: { hits.total: 2 }
|
|
- match: { hits.hits.0._id: "1" }
|
|
- match: { hits.hits.1._id: "2" }
|
|
|
|
- do:
|
|
index: test
|
|
search:
|
|
body:
|
|
query:
|
|
function_score:
|
|
query:
|
|
term:
|
|
test: value
|
|
"functions": [{
|
|
"script_score": {
|
|
"script": {
|
|
"lang": "js",
|
|
"inline": "Math.pow(doc['num1'].value, 2)"
|
|
}
|
|
}
|
|
}]
|
|
|
|
- match: { hits.total: 2 }
|
|
- match: { hits.hits.0._id: "2" }
|
|
- match: { hits.hits.1._id: "1" }
|
|
|
|
- do:
|
|
index: test
|
|
search:
|
|
body:
|
|
query:
|
|
function_score:
|
|
query:
|
|
term:
|
|
test: value
|
|
"functions": [{
|
|
"script_score": {
|
|
"script": {
|
|
"lang": "js",
|
|
"inline": "Math.max(doc['num1'].value, 1)"
|
|
}
|
|
}
|
|
}]
|
|
|
|
- match: { hits.total: 2 }
|
|
- match: { hits.hits.0._id: "2" }
|
|
- match: { hits.hits.1._id: "1" }
|
|
|
|
- do:
|
|
index: test
|
|
search:
|
|
body:
|
|
query:
|
|
function_score:
|
|
query:
|
|
term:
|
|
test: value
|
|
"functions": [{
|
|
"script_score": {
|
|
"script": {
|
|
"lang": "js",
|
|
"inline": "doc['num1'].value * _score"
|
|
}
|
|
}
|
|
}]
|
|
|
|
- match: { hits.total: 2 }
|
|
- match: { hits.hits.0._id: "2" }
|
|
- match: { hits.hits.1._id: "1" }
|
|
|
|
- do:
|
|
index: test
|
|
search:
|
|
body:
|
|
query:
|
|
function_score:
|
|
query:
|
|
term:
|
|
test: value
|
|
"functions": [{
|
|
"script_score": {
|
|
"script": {
|
|
"lang": "js",
|
|
"inline": "param1 * param2 * _score",
|
|
"params": {
|
|
"param1": 2,
|
|
"param2": 2
|
|
|
|
}
|
|
}
|
|
}
|
|
}]
|
|
|
|
- match: { hits.total: 2 }
|
|
|
|
---
|
|
|
|
"JavaScript Scores Nested":
|
|
- do:
|
|
index:
|
|
index: test
|
|
type: test
|
|
id: 1
|
|
body: { "dummy_field": 1 }
|
|
- do:
|
|
indices.refresh: {}
|
|
|
|
- do:
|
|
index: test
|
|
search:
|
|
body:
|
|
query:
|
|
function_score:
|
|
query:
|
|
function_score:
|
|
"functions": [
|
|
{
|
|
"script_score": {
|
|
"script": {
|
|
"lang": "js",
|
|
"inline": "1"
|
|
}
|
|
}
|
|
}, {
|
|
"script_score": {
|
|
"script": {
|
|
"lang": "js",
|
|
"inline": "_score.doubleValue()"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
"functions": [{
|
|
"script_score": {
|
|
"script": {
|
|
"lang": "js",
|
|
"inline": "_score.doubleValue()"
|
|
}
|
|
}
|
|
}]
|
|
|
|
- match: { hits.total: 1 }
|
|
- match: { hits.hits.0._score: 1.0 }
|
|
|
|
|
|
---
|
|
|
|
"JavaScript Scores With Agg":
|
|
- do:
|
|
index:
|
|
index: test
|
|
type: test
|
|
id: 1
|
|
body: { "dummy_field": 1 }
|
|
- do:
|
|
indices.refresh: {}
|
|
|
|
|
|
- do:
|
|
index: test
|
|
search:
|
|
body:
|
|
query:
|
|
function_score:
|
|
"functions": [{
|
|
"script_score": {
|
|
"script": {
|
|
"lang": "js",
|
|
"inline": "_score.doubleValue()"
|
|
}
|
|
}
|
|
}]
|
|
aggs:
|
|
score_agg:
|
|
terms:
|
|
script:
|
|
lang: js
|
|
inline: "_score.doubleValue()"
|
|
|
|
- match: { hits.total: 1 }
|
|
- match: { hits.hits.0._score: 1.0 }
|
|
- match: { aggregations.score_agg.buckets.0.key: "1.0" }
|
|
- match: { aggregations.score_agg.buckets.0.doc_count: 1 }
|
|
|
|
---
|
|
|
|
"JavaScript Use List Length In Scripts":
|
|
- do:
|
|
index:
|
|
index: test
|
|
type: test
|
|
id: 1
|
|
body: { "f": 42 }
|
|
- do:
|
|
indices.refresh: {}
|
|
|
|
|
|
- do:
|
|
index: test
|
|
search:
|
|
body:
|
|
script_fields:
|
|
foobar:
|
|
lang: js
|
|
script: "doc['f'].values.length"
|
|
|
|
|
|
- match: { hits.total: 1 }
|
|
- match: { hits.hits.0.fields.foobar.0: 1 }
|
|
|