1

所以我的情况是,在我的应用程序中,有一个内联搜索,就像我们在 Udemy 网站标题栏上的搜索一样,用户可以在其中输入多个单词。现在,我想使用用户输入的多词搜索文本来查询多字段。

我查询的多字段具有以下映射

_映射

{
    "category": {
        "type": "keyword"
    },
    "designers": {
        "type": "nested",
        "properties": {
            "name": {
                "type": "keyword"
            }
        }
    },
    "story": {
        "type": "text"
    },
    "foundryName": {
        "type": "text",
    }
}

我的问题是如何进行像“designerFirstName1 category1 foundryName1”这样的多词搜索,并在匹配的文档中包含我正在搜索的任何一个多字段中的每个词的结果,因为我继续添加更多的词结果集应该减少。

询问

{
    "query": {
        "bool": {
            "should": [
                {
                    "nested": {
                        "path": "designers",
                        "query": {
                            "match": {
                                "designers.name": {
                                    "query": "designerFirstName1 category1 foundryName1",
                                    "fuzziness": "auto"
                                }
                            }
                        }
                    }
                },
                {
                    "multi_match": {
                        "query": "designerFirstName1 category1 foundryName1",
                        "type": "cross_fields",
                        "fields": [
                            "story",
                            "foundryName",
                            "category",
                        ]
                    }
                }
            ],
            "minimum_should_match": 1
        }
    }
}

预期的结果是这种文档应该更高,然后随着我们往下走,结果开始在任何一个字段中都没有所有多词(如下所示)

{
    "category": [
        "category1",
        "category2"
    ],
    "designers": [
        {
            "name": "designerFirstName1 designerLastName1"
        },
        {
            "name": "designerFirstName2 designerLastName2"
        }
    ],
    "story": "Sphinx of black quartz, judge my vow! Sex-charged fop blew my junk TV quiz.",
    "foundryName": "foundryName1"
},
{
    "category": [
        "category2",
        "category3"
    ],
    "designers": [
        {
            "name": "designerFirstName1 designerLastName1"
        },
        {
            "name": "designerFirstName2 designerLastName2"
        }
    ],
    "story": "Sphinx of black quartz, judge my vow! Sex-charged fop blew my junk TV quiz.",
    "foundryName": "foundryName1"
},
{
    "category": [
        "category1",
        "category3"
    ],
    "designers": [
        {
            "name": "designerFirstName3 designerLastName1"
        },
        {
            "name": "designerFirstName2 designerLastName2"
        }
    ],
    "story": "Sphinx of black quartz, judge my vow! Sex-charged fop blew my junk TV quiz.",
    "foundryName": "foundryName1"
},
{
    "category": [
        "category2",
        "category3"
    ],
    "designers": [
        {
            "name": "designerFirstName3 designerLastName1" /*changed here comparing with the above document*/
        },
        {
            "name": "designerFirstName2 designerLastName2"
        }
    ],
    "story": "Sphinx of black quartz, judge my vow! Sex-charged fop blew my junk TV quiz.",
    "foundryName": "foundryName1"
},
4

0 回答 0