0

我在 ES 中有一个文档,我可以通过名称、id 等进行查询。但是在文档内部我有一个数据数组,我现在也希望能够查询这些数据,但在文档中找不到任何解决方案。

那么,如果您想在数组中查找,查询会是什么样子呢?我的文档示例:

        {
            "bookId": "fa04d4e0-456f-4fdf-8bd5-a47af454b27d",
            "authorId": "f35db7d6-e997-432c-9044-87b3cbcf87c0",
            "name": "The art of War",
            "searchWords": [],
            "language": {
                "code": "nl",
                "name": "Nederlands"
            },
            "publicationDate": "2021-11-24T11:03:34+01:00",
            "images": [
                {
                    "id": "00000000-0000-0000-0000-000000000000",
                    "data": {
                        "name": "image1",
                        "url": null,
                        "fileExtension": null,
                        "fileSize": null,
                    },
                    "position": 0
                },
                {
                    "id": "00000000-0000-0000-0000-000000000000",
                    "data": {
                        "name": "image1",
                        "url": null,
                        "fileExtension": null,
                        "fileSize": null,
                    },
                    "position": 0
                },
                ]

这是我查询例如名称的方式:

        if (isset($query['name'])) {
            $nameBoolQuery = new BoolQuery();
            $nameBoolQuery->add(new WildcardQuery('name', strtolower($query['name']) . '*'), BoolQuery::SHOULD);
            $nameBoolQuery->addParameter('minimum_should_match', 1);
            $boolQuery->add($nameBoolQuery);
        }

但是,如果我想查询我的一张图片的名称,这是行不通的:

    if (isset($query['imageName'])) {
        $nameBoolQuery = new BoolQuery();
        $nameBoolQuery->add(new WildcardQuery('images.data.name', strtolower($query['keyword']) . '*'), BoolQuery::SHOULD);
        $nameBoolQuery->addParameter('minimum_should_match', 1);
        $boolQuery->add($nameBoolQuery);
        
    }
4

0 回答 0