elasticsearch,Curl,elasticsearch" /> elasticsearch,Curl,elasticsearch" />

Curl 过滤Elasticsearch Percolate API中执行的查询

Curl 过滤Elasticsearch Percolate API中执行的查询,curl,elasticsearch,Curl,elasticsearch,我有以下代码: #/bin/bash #删除,然后创建集合“foo”。 curl-s-XDELETE localhost:9200/foo>/dev/null curl-s-XPUT localhost:9200/foo>/dev/null #创建两个名为“barbaz1”和“barbaz2”的渗滤器,具有不同的 #“plugh”字段中的值。 curl-XPUT localhost:9200/_percolator/foo/barbaz1-d'{ “plugh”:“xyzy”, “查询”:{ “

我有以下代码:

#/bin/bash
#删除,然后创建集合“foo”。
curl-s-XDELETE localhost:9200/foo>/dev/null
curl-s-XPUT localhost:9200/foo>/dev/null
#创建两个名为“barbaz1”和“barbaz2”的渗滤器,具有不同的
#“plugh”字段中的值。
curl-XPUT localhost:9200/_percolator/foo/barbaz1-d'{
“plugh”:“xyzy”,
“查询”:{
“期限”:{
“酒吧”:“baz”
}
}
}'
回声“”
curl-XPUT localhost:9200/_percolator/foo/barbaz2-d'{
“plugh”:“waldo”,
“查询”:{
“期限”:{
“酒吧”:“baz”
}
}
}'
回声“”
#首先过滤掉所有“plugh”字段不是“waldo”的查询,然后
#尝试匹配这些。没有按预期工作!
curl-XGET localhost:9200/foo/qux/_percolate-d'{
“文件”:{
“酒吧”:“baz”
},
“查询”:{
“期限”:{
“plugh”:“waldo”
}
}
}'
回声“”
#删除创建的过滤器。
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":[]}

我做错了什么?

它不起作用,因为你在索引你的过滤程序之后太快就询问了
\u percolate

如果在过滤之前在
\u percolator
索引上添加
刷新
,则该功能将起作用:


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

对,这似乎就是问题所在。percolator在只运行所有查询时是实时的,但它只是(接近)实时的,因为过滤查询意味着查询,需要刷新以使数据可用于搜索。我可以确认此功能现在对我有效。非常感谢。