弹性搜索合并查询

时间:2019-12-23 11:57:41

标签: database elasticsearch querying

我对Elastic Search查询完全陌生,需要帮助。

我有一个包含4个字段的产品索引,比如diameterbrandpricemonth

我需要将所有带有diameter = 13的产品与所有带有brand = brandino的产品(没有重复项)与所有带有price范围的100 to 1000的产品合并。并过滤出条件为month != 10的产品。

在这种情况下,我的查询应如何显示?

1 个答案:

答案 0 :(得分:0)

用于1个字段搜索的简单查询,例如:

"query": {
    "match": {
        "brand": "brandino"
    }
}

在您的情况下,您需要一个查询多个字段的查询,因此;您应该使用bool,例如:

"query": {
    "bool": {
        "must": [
            {
                "match" :{
                    "diameter": 13
                }
            },
            {
                "match" :{
                    "brand": "brandino"
                }
            },
            {
                "range" :{
                    "price": {
                        "gte": 100,
                        "lte": 1000
                    }
                }
            }
        ]
    }
}

详细了解:

  1. match查询。
  2. range查询。

此外,您应注意text之类的字段:brand可能被映射为keyword,这意味着您需要编写如下查询:

"brand.keyword": "brandino"