elasticsearch 在嵌套字段中筛选

jmo0nnb3  于 2023-05-22  发布在  ElasticSearch
关注(0)|答案(1)|浏览(149)

我的文档示例如下:

[
  {
    "paperType": "a4",
    "paperName": "copierbond",
    "details": [
      {
        "fieldName": "paperColor",
        "text": "red"
      },
      {
        "fieldName": "paperThickness",
        "double": 90.0
      }
    ]
  },
  {
    "paperType": "a4",
    "paperName": "copierbond",
    "details": [
      {
        "fieldName": "paperColor",
        "text": "red"
      },
      {
        "fieldName": "paperThickness",
        "double": 89.9
      }
    ]
  },
  {
    "paperType": "a4",
    "paperName": "bestcopierbond",
    "details": [
      {
        "fieldName": "paperColor",
        "text": "white"
      },
      {
        "fieldName": "paperThickness",
        "double": 90.2
      }
    ]
  },
  {
    "paperType": "a4",
    "paperName": "bestcopierbond",
    "details": [
      {
        "fieldName": "paperColor",
        "text": "white"
      },
      {
        "fieldName": "paperThickness",
        "double": 90.1
      }
    ]
  }
]

我的Map如下:

{
  "mappings": {
    "properties": {
      "details": {
        "type": "nested",
        "properties": {
          "fieldName": {
            "type": "keyword"
          },
          "textVal": {
            "type": "text"
          },
          "doubleVal": {
            "type": "double"
          }
        },
        "paperName": {
          "type": "keyword"
        },
        "paperType": {
          "type": "keyword"
        }
      }
    }
  }
}

我想检索文档,使得details字段只包含一些对,如fieldName-text,而不包含fieldName-double。示例响应:

[
  {
    "paperType": "a4",
    "paperName": "copierbond",
    "details": [
      {
        "fieldName": "paperColor",
        "text": "red"
      }
    ]
  },
  {
    "paperType": "a4",
    "paperName": "copierbond",
    "details": [
      {
        "fieldName": "paperColor",
        "text": "red"
      }
    ]
  },
  {
    "paperType": "a4",
    "paperName": "bestcopierbond",
    "details": [
      {
        "fieldName": "paperColor",
        "textVal": "white"
      }
    ]
  },
  {
    "paperType": "a4",
    "paperName": "bestcopierbond",
    "details": [
      {
        "fieldName": "paperColor",
        "text": "white"
      }
    ]
  }
]

我检查了嵌套字段的文档,但找不到在查询中省略特定字段的方法。

vshtjzan

vshtjzan1#

您可以使用排除。

GET index/_search
{
  "_source": {
    "excludes": "details.doubleVal"
  }, 
  "query": {
    "match_all": {}
  }
}

相关问题