【问题标题】:Index specific terms filter in Elastic search弹性搜索中的索引特定术语过滤器
【发布时间】:2018-09-10 19:32:42
【问题描述】:

我有一个多重匹配搜索查询,我之前根据 client_code 术语过滤器限制了搜索结果。这很好用。

我现在需要进一步限制结果,因为某些用户应该只能返回有限零件或产品 ID 的结果。零件/产品 ID 会有所不同,将通过应用程序逻辑确定。

如下面的无效示例所示,我正在努力解决的是如何为每个索引中的 id 应用术语过滤器。

GET parts,products/_search
{
  "size": 20,
  "query": {
    "bool": {
      "must": [],
      "filter": [
        {
          "terms": {
            "client_code": [
              "abc"
            ]
          }
        },
        {
          "terms": {
             "products.id": [
              123,456,789
            ]
          }  
        },
        {
          "terms": {
             "parts.id": [
              abc123,abc456,abc789
            ]
          }  
        },
        {
          "multi_match": {
            "query": "foo",
            "fields": [
              "_id",
              "name",
              "sku",
              "title",
              "barcode"
            ]
          }
        }
      ]
    }
  }
}

当然,我可以像这样应用术语过滤器:

    {
      "terms": {
         "id": [
          123,456,abc789
        ]
      }  
    }

但是,如果索引中的 ID 相同,当数据来自自动递增的数据库时就是这种情况,我需要一种方式来说“给我产品 ID 1,2 和 3 以及零件 ID 1,3 和例如 4'。我希望这是有道理的?

任何指针将不胜感激。

【问题讨论】:

    标签: elasticsearch lucene


    【解决方案1】:

    如果您给出了 data type ,我可以给出更具体的答案,但从您提供的内容来看,您应该看看 Nested Query。

    https://www.elastic.co/guide/en/elasticsearch/reference/current/nested.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-18
      • 1970-01-01
      • 1970-01-01
      • 2019-09-10
      • 1970-01-01
      • 2015-03-10
      相关资源
      最近更新 更多