Elasticsearch percolation + скрипт-фильтр с использованием Groovy Switch
Я не могу заставить перколяцию работать с фильтром скриптов, используя Groovy Switch.
Я создаю такой документ
curl -XPUT http://localhost:9200/perc_test/perc_type/1 -d'{"v": true}'
=> (OK) {"_index":"perc_test","_type":"perc_type","_id":"1","_version":1,"created":true}
Я проверяю, что этот документ соответствует моему запросу. Обратите внимание, что в моем реальном случае использования мне нужно использовать переключатель, отсюда и странный запрос сценария.
curl -XPOST http://localhost:9200/perc_test/_search -d'
{
"query": {
"filtered": {
"query": {"match_all": {}},
"filter": {
"script": {
"script": "switch (_source[\"v\"]) {\n case { it == true }:\n return true \n default: \n return false\n}"
}
}
}
}
}'
=> (OK) {"took":1,"timed_out":false,"_shards":{"total":1,"successful":1,"failed":0},"hits":{"total":1,"max_score":1.0,"hits":[{"_index":"perc_test","_type":"perc_type","_id":"1","_score":1.0,"_source":{"v": true}}]}}
Я регистрирую точно такой же запрос к API перколятора.
curl -XPOST http://localhost:9200/perc_test/.percolator/1 -d'
{
"query": {
"filtered": {
"query": {"match_all": {}},
"filter": {
"script": {
"script": "switch (_source[\"v\"]) {\n case { it == true }:\n return true \n default: \n return false\n}"
}
}
}
}
}'
=> (OK){"_index":"perc_test","_type":".percolator","_id":"1","_version":1,"created":true}
Затем я пытаюсь получить зарегистрированный документ, но он не работает
curl -XGET http://localhost:9200/perc_test/perc_type/1/_percolate
=> (KO) {"took":1,"_shards":{"total":1,"successful":1,"failed":0},"total":0,"matches":[]}%
Тот же результат с
curl -XPOST http://localhost:9200/perc_test/perc_type/_percolate -d'{"doc": {"v": true}}'
=> (KO) {"took":1,"_shards":{"total":1,"successful":1,"failed":0},"total":0,"matches":[]}%