仅返回匹配的数组项,而不是ElasticSearch中的所有文档值

问题描述 投票:0回答:1

我是Elasticsearch的新手。我的客户的搜索页面结果遇到了意外的行为,我的调查最终以ES结构结束。

我有一个文档字段name,具有此映射:

"name": {
    "type": "text",
    "fields": {
        "sort_name": {
            "index": false,
            "type": "keyword"
        }
    }
}

因此,通常,它具有一个值,因此,在这种情况下,它与查询正确匹配。但是有时我有一个文档,其中包含一个产品名称数组,这导致将所有数组值都提取到搜索页面结果中。

例如,如果我有一个产品,看起来像这样:

{
    ...,
    "name": [
        "Tesla",
        "Model",
        "XXX"
    ]
}

所以,当我在name上搜索此内容时:

{
    "from": 0,
    "query": {
        "bool": {
            "must": [
                {
                    "match": {
                        "name": "Tesla"
                    }
                }
            ]
        }
    },
    "size": 150,
    "sort": [
        {
            "_score": {
                "order": "desc"
            }
        }
    ],
    "stored_fields": [
        "_id",
        "_score"
    ]
}

它返回此:

"hits": {
    "total": 1,
    "max_score": 1.0,
    "hits": [
        {
            "_index": "magento2_product_4_v2",
            "_type": "document",
            "_id": "99999",
            "_score": 1.0,
            "_source": {
                "name": [
                    "Tesla",
                    "Model",
                    "XXX"
                ]
            }
        }
    ]
}

当我只需要Tesla时。

因此,我将有2个用户没有搜索的产品(假设ModelXXX是产品)。>

我真的想避免结构更改,因为新索引是在重新索引过程中自动创建的(我现在正在使用Magento 2,所以您可以帮助我进行查询吗?

我是Elasticsearch的新手。我的客户的搜索页面结果遇到了意外的行为,我的调查最终以ES结构结束。我有一个文档字段名称,它具有此名称...

elasticsearch search magento2
1个回答
0
投票

您的索引magento2_product_4_v2中有1个文档。这是>

{
    ...,
    "name": [
        "Tesla",
        "Model",
        "XXX"
    ]
}
© www.soinside.com 2019 - 2024. All rights reserved.