Ограничить вызов percolator для типа в ElasticSearch
Как объясняется в документе, когда я сохраняю запрос с помощью _percolator, например:
curl -XPUT localhost:9200/_percolator/test/kuku -d '{
"color" : "blue",
"query" : {
"term" : {
"field1" : "value1"
}
}
}'
Этот запрос будет выполняться, когда я фильтрую документ по индексу 'test', но если я хочу ограничить его типом 'foo' индекса 'test', единственное решение - добавить тип в запрос:
curl -XPUT localhost:9200/_percolator/test/kuku -d '{
"type":"foo",
"color" : "blue",
"query" : {
"term" : {
"field1" : "value1"
}
}
}'
А при добавлении документа используйте
curl -XGET localhost:9200/test/type1/_percolate -d '{
"doc" : {
"field1" : "value1"
},
"query" : {
"term" : {
"type" : "foo"
}
}
}'
Есть ли другое решение? Я старался
curl -XPUT localhost:9200/_percolator/test/foo/kuku
Но это не работает.
1 ответ
Решение
Альтернативный подход - заключить исходный запрос в отфильтрованный запрос и добавить фильтр терминов для _type:
{
"query": {
"filtered":{
"query": {
"term":{
field1" : "value1"
}
},
"filter": {
"term": {
"_type" : "type1"
}
}
}
}
}