【问题标题】:Query with multiple fields and conditions in ElasticSearch在 ElasticSearch 中使用多个字段和条件进行查询
【发布时间】:2015-02-23 00:49:48
【问题描述】:

在 ElasticSearch 中是否可以在一个查询中转换此 SQL?

SELECT * FROM table WHERE state IN ('NY', 'CA', 'FL') AND grade IN ('GOOD', 'BAD') AND active = 'YES' AND quantity > 100 AND quantity < 200

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    您可以为此使用 filtered querybool filter

    {
      "query" : {
        "filtered" : {
          "query" : {
            "match_all" : {}
          },
          "filter" : {
            "bool" : {
              "must" : [{
                  "terms" : {
                    "state" : [
                      "NY",
                      "CA",
                      "FL"
                    ]
                  }
                }, 
                {
                  "terms" : {
                    "grade" : [
                      "GOOD",
                      "BAD"
                    ]
                  }
                }, 
                {
                  "term" : {
                    "active" : "YES"
                  }
                }, 
                {
                  "range" : {
                    "quantity" : {
                      "gt" : 100,
                      "lt" : 200
                    }
                  }
                }
              ]
            }
          }
        }
      }
    }
    

    【讨论】:

    • 如果数量只是quantity &gt; 100?
    • 只需删除范围过滤器上的lt 属性,即{ "range" : { "quantity" :{ "gt" : 100 } } }
    猜你喜欢
    • 2020-10-22
    • 2017-10-22
    • 1970-01-01
    • 2020-02-26
    • 2022-06-29
    • 2016-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多