2013-11-26 2 views
0

У меня есть этот код:Фильтрации выполненных запросов в Elasticsearch просачивается API

#!/bin/bash 

# Deletes, then creates the collection "foo". 
curl -s -XDELETE localhost:9200/foo > /dev/null 
curl -s -XPUT localhost:9200/foo > /dev/null 

# Creates two percolators called "barbaz1" and "barbaz2" with different 
# values in the "plugh" field. 
curl -XPUT localhost:9200/_percolator/foo/barbaz1 -d '{ 
    "plugh": "xyzzy", 
    "query": { 
     "term": { 
      "bar": "baz" 
     } 
    } 
}' 
echo "" 

curl -XPUT localhost:9200/_percolator/foo/barbaz2 -d '{ 
    "plugh": "waldo", 
    "query": { 
     "term": { 
      "bar": "baz" 
     } 
    } 
}' 
echo "" 

# First filters out all queries whose "plugh" field is not "waldo", then 
# tries to match those. Does NOT work as expected! 
curl -XGET localhost:9200/foo/qux/_percolate -d '{ 
    "doc": { 
     "bar": "baz" 
    }, 
    "query": { 
     "term": { 
      "plugh": "waldo" 
     } 
    } 
}' 
echo "" 

# Deletes the created percolators. 
curl -s -XDELETE localhost:9200/_percolator/foo/barbaz1 > /dev/null 
curl -s -XDELETE localhost:9200/_percolator/foo/barbaz2 > /dev/null 

, которая создает два перколяторов называемых barbaz1 и barbaz2 и затем запустить документ против них. То, что я ожидал увидеть, что только barbaz2 матчи, что я получаю вместо этого:

{"ok":true,"_index":"_percolator","_type":"foo","_id":"barbaz1","_version":1} 
{"ok":true,"_index":"_percolator","_type":"foo","_id":"barbaz2","_version":1} 
{"ok":true,"matches":[]} 

Что я делаю неправильно?

ответ

2

Это не работает, потому что вы сразу же спрашиваете _percolate после индексации ваших перколяторов.

Это будет работать, если вы добавите refresh по индексу _percolator перед тем просачиваясь:

curl -XPOST 'http://localhost:9200/_percolator/_refresh'

+0

право, это, кажется, проблема. перколятор работает в режиме реального времени, когда дело доходит только до выполнения всех запросов, но это только (рядом) в режиме реального времени, поскольку запросы фильтрации подразумевают запрос, для которого требуется обновление, чтобы сделать данные доступными для поиска. – javanna

+0

Я могу подтвердить, что эта функция теперь работает на меня. Спасибо! –

Смежные вопросы