elasticsearch ElasticSearch-按内部点击过滤结果,elasticsearch,elasticsearch-5,elasticsearch,elasticsearch 5" /> elasticsearch ElasticSearch-按内部点击过滤结果,elasticsearch,elasticsearch-5,elasticsearch,elasticsearch 5" />

elasticsearch ElasticSearch-按内部点击过滤结果

elasticsearch ElasticSearch-按内部点击过滤结果,elasticsearch,elasticsearch-5,elasticsearch,elasticsearch 5,我们有一个简单的实体索引和映射: PUT resource/_mapping/entity { "properties": { "id": { "type": "keyword" }, "name": { "type": "keyword" }, "claims": { "type": "nested", "properties": { "claimid": { "ty

我们有一个简单的实体索引和映射:

PUT resource/_mapping/entity
{
  "properties": {
    "id": {
      "type": "keyword"
    },
    "name": {
      "type": "keyword"
    },
    "claims": {
      "type": "nested",
      "properties": {
        "claimid": {
          "type": "keyword"
        },
        "priority": {
          "type": "short"
        },
        "visibility": {
          "type": "keyword"
        }
      }
    }
  }
}
以下是索引中的示例文档:

POST resource/entity/
{
  "id": "2",
  "name": "e2",
  "claims": [
    {
      "claimid": "c1",
      "priority": "2",
      "visibility": "M",
      "reqid" : "2"
    },
    {
      "claimid": "c2",
      "priority": "1",
      "visibility": "V",
      "reqid" : "2"
    },
    {
      "claimid": "c5",
      "priority": "3",
      "visibility": "H",
      "reqid" : "2"
    }
  ]
}
以及一个查询,用于根据提供的一组“claims.claimid”筛选文档,然后按“claims.priority”排序,选择优先级最高的一个,并仅返回“claims.visibility”,例如:

GET resource/entity/_search/
{
  "query": {
    "nested": {
      "path": "claims",
      "query": {
        "bool": {
          "must": [
            {
              "terms": {
                "claims.claimid": [
                  "c1",
                  "c4",
                  "c5"
                ]
              }
            }
          ]
        }
      },          
      "inner_hits": {
        "sort": [
          {
            "claims.priority": "asc"
          }
        ],
        "size":1,
        "_source":{"includes":["claims.visibility"]}
      }
    }
  }
}
最后要解决的问题是:如何修改查询以筛选出在内部点击中具有最高优先级的可见性为“H”的文档?或者,还有什么其他查询将返回一组文档,这些文档的可见性是通过提供的索赔ID过滤的最高优先级的,但仅限于可见性不是“H”的文档

这里的一个陷阱是,我们必须对具有所有类型的可视性的文档进行排序,并在完整的结果列表中过滤掉那些结果为“H”的文档