Elasticsearch过滤了对子对象字段的搜索

时间:2012-02-01 23:35:42

标签: elasticsearch

如何在子对象字段中对ElasticSearch进行过滤搜索?例如,我的文档有一个id和一个data字段,它是一个JSON数组,表示数据在数据库中的存储方式:

{_id: 000, merchant: "merchant_1", email: "hello@email.com"}

我的搜索查询:

"query": {
    "filtered": {
        "filter": { "term": { "data.merchant": "merchant_1"} },
        "query": {
            "query_string": {"query": "hello"} }
        }
    }
}

不会返回任何内容,但只使用query_string hello进行查询会返回正确的行。正在更改"data.merchant" => "merchant"也不会改变任何内容。

我在这里做错了吗?

更新:我最后只使用了一个布尔查询,该工作正常运行。

1 个答案:

答案 0 :(得分:0)

"query": {
    "filtered": {
        "filter": { "term": { "data.merchant": "merchant_1"} },
        "query": {
            "query_string": {
                "default_field": "_all",
                "query": "hello"
            }
        }
    }
}

这适用于您的情况。