首页 > 解决方案 > 字符串数组的 ElasticSearch multi_match 查询

问题描述

我需要从 ElasticSearch 中查询 3000 条数据,目前我正在使用 multi_match 进行查询。有没有办法使用字符串数组进行匹配?Term 不可用,因为它只查询字符串的确切值。

下面是一个理想请求的示例:

{

    "size": 1,
    "_source": ["_id"],
    "query": {
        "multi_match": {
            "query": ["val1", "val2"],
            "fields": [
                "name",
                "url"
            ]
        }
    }
}

编辑:

另一个用例是搜索学校:

{

    "size": 1,
    "_source": ["_id"],
    "query": {
        "multi_match": {
            "query": ["school name 1", "school name 2"],
            "fields": [
                "name"
            ]
        }
    }
}

将每个值的空格视为整个学校名称。

标签: elasticsearch

解决方案


multi_match不接受值数组,但没有什么能阻止您发送包含值的字符串。查询字符串将被分析为两个标记val1val2并且每个标记都将在每个字段上单独匹配。

{

    "size": 1,
    "_source": ["_id"],
    "query": {
        "multi_match": {
            "query": "val1 val2",
            "fields": [
                "name",
                "url"
            ]
        }
    }
}

推荐阅读