Ограничить вызов 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"
                 }
              }
          }
     }
}
Другие вопросы по тегам