Elasticsearch - 如何在嵌套字段

时间:2017-10-25 17:38:25

标签: elasticsearch elasticsearch-query

我正在重写文档中的嵌套字段,并且无法使查询权限对嵌套字段进行排序。

以前我有这样的嵌套字段:

"my_nested_obj": {
        "project-type": [
          {
            "name": "Table",
            "value": "159841"
          }
        ],
        "cost": [
          {
            "name": "Under $50",
            "value": "426503"
          }
        ],
        "skill-level": [
          {
            "name": "Intermediate",
            "value": "63897"
          }
        ],
        "room": [
          {
            "name": "Outdoor",
            "value": "19246"
          }
        ]
      }....

我能够编写这样的查询,我可以提升并对“my_nested_obj”进行排序。例如:

    {
      "from": 0,
      "size": 50,
      "query": {
      "filtered": {
      "query": {
        "multi_match": {
            "query": "something",
            "fields": [
                "content",
                "name",
                "my_nested_obj.skill-level.name^3"
            ]
        }
      },
      "filter": {
        "bool": {
          "must": [
            {
              "match_all": [

              ]
            },
            {
              "term": {
                "retired": false
              }
            }
          ]
        }
      }
    }
  },
      "sort": {
       "my_nested_obj.skill-level.name": "desc"
      },
      "timeout": "1800ms"
      }

现在,我需要重新格式化嵌套字段,如:

 "my_nested_obj": [
        {
          "name": "Table",
          "type": "project-type",
          "value": "159841"
        },
        {
          "name": "Under $50",
          "type": "cost",
          "value": "426503"
        },
        {
          "name": "Intermediate",
          "type": "skill-level",
          "value": "63897"
        },
        {
          "name": "Outdoor",
          "type": "room",
          "value": "19246"
        }
      ]....

我可以在my_nested_obj.name上进行泛型排序,如:

....
"sort": {
    "my_nested_obj.name": "desc"
 },
 ...

如何添加例如排序特定技能级别名称而不是所有my_nested_obj.name?还有一些方法来指定提升?

谢谢!

0 个答案:

没有答案