3

是否可以注册查询(如渗透过程)并按名称调用它们来执行它们。我正在构建一个应用程序,让用户保存与标签关联的搜索查询。我想将过滤器生成的查询保存在 ES 中。

如果我将查询保存在索引中,我必须先调用 ES 来检索查询,提取包含查询的字段,然后再次调用 ES 来执行它。我可以一次通话吗?

另一种解决方案是注册查询(带有用户标识符的_percolator标签:/_percolate/transaction/user1_label1

{
  "userId": "user1",
  "query":{
     "term":{"field1":"foo" }
   }
}

当有一个新文档时,在非索引模式下使用过滤器(根据 userId 过滤)来检索哪个查询匹配,然后通过添加字段 "label":["user1_label1", "user1_label2"] 来更新文档,最后索引文档。所以标签是在索引时完成的。

你怎么看 ?提前致谢。

4

1 回答 1

3

尝试过滤别名。

curl -XPOST 'http://localhost:9200/_aliases' -d '
{
    "actions" : [
         {
            "add" : {
                 "index" : "the_real_index",
                 "alias" : "user1",
                 "filter" : { "term" : { "field1" : "foo" } }
            }
        }
    ]
}'
于 2012-10-24T14:21:59.597 回答