【问题标题】:Can you reference other queries in Elasticsearch percolator?您可以参考 Elasticsearch percolator 中的其他查询吗?
【发布时间】:2019-09-28 00:31:27
【问题描述】:

过滤器查询可以引用过滤器索引中其他存储的查询文档吗?例如,假设我有以下布尔查询,_id=1,已经在过滤器中建立索引:

{
  "query": {
    "bool": {
      "must": [
        { "term": { "tag": "wow" } }
      ]
    }
  }
}

我能否再查询一个带有 _id=2 的索引(请注意,我正在编写 _percolator_ref_id 术语查询键):

{
  "query": {
    "bool": {
      "should": [
        { "term": { "tag": "elasticsearch" } },
        { "terms" : { "_percolator_ref_id": [1] } }
      ]
    }
  }
}

如果我渗透了以下文件:

{ "tag": "wow" }

我希望 _id=1_id=2 查询匹配。像_percolator_ref_id 这样的功能是否存在?

谢谢!

编辑:澄清一下,我事先不知道给定查询中出现了多少查询引用(例如,_id=2 查询可能会引用其他 10 个查询)。

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    您可以执行以下操作

    以下索引中注册了 2 个查询

    PUT myindex
    {
        "mappings": {
            "properties": {
                "query1": {
                    "type": "percolator"    
                },
                "query": {
                    "type": "percolator"
                },
                "field": {
                    "type": "text"
                }
            }
        }
    }
    

    您可以使用 bool 和 must/should 组合不同的查询

    GET /myindex/_search
    {
      "query": {
        "bool": {
          "must": [
            {
              "percolate": {
                "field": "query",
                "document": {
                  "field": "fox jumps over the lazy dog"
                }
              }
            },
            {
              "percolate": {
                "field": "query1",
                "document": {
                  "field": "fox jumps over the lazy dog"
                }
              }
            }
          ]
        }
      }
    }
    

    【讨论】:

    • 感谢您的建议!我没有考虑在同一个文档中存储多个过滤器字段。但是,如果我事先不知道一个查询中将引用多少个 other 查询(例如,我上面示例中的 _id=2 可能需要引用 10 个其他查询)怎么办?这个解决方案能适应吗?我将编辑我的问题以澄清这一点。
    • 没有通过 ID 链接渗透器的选项。可以做的是创建具有不同名称的过滤器,例如,您可以在映射中添加两个名为 query 和 query1 的过滤器。如果添加了新的 percolator 文档,您可以将其添加到任一组中。在将渗透器应用于文档时,您只能指定查询/查询1之类的字段,而不能为其使用 id
    • 这是有道理的。谢谢你的解释!接受这个答案,因为它可能最接近我正在寻找的功能。
    • 很高兴能帮上忙
    猜你喜欢
    • 2015-01-10
    • 2021-08-27
    • 2020-12-08
    • 2015-09-26
    • 1970-01-01
    • 2017-02-04
    • 2013-06-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多