要不要再翻翻文档呢?

elasticsearch怎么实现 select * from table where a=1 and b=2

Elasticsearch | 作者 ruicai.li | 发布于2017年08月22日 | 阅读数:3225

 这个查询怎么用elasticsearch实现:SELECT product FROM products WHERE (price = 20 AND productID = "XHDK-A-1293-#fJ3")
 
 
官网上面只有:
SELECT product FROM products WHERE (price = 20 OR productID = "XHDK-A-1293-#fJ3") AND (price != 30)
已邀请:

laoyang360 - 《一本书讲透Elasticsearch》作者,Elastic认证工程师 [死磕Elasitcsearch]知识星球地址:http://t.cn/RmwM3N9;微信公众号:铭毅天下; 博客:https://elastic.blog.csdn.net

赞同来自: ruicai.li

bool查询结合must 相当于&操作,
bool查询结合should相当于或操作。

ruicai.li

赞同来自:

上面的问题已经解决,下面的查询语句中用bool,must和term就能实现,但是又有一个关于模糊查询的问题,比如我的每条日志都有几个标签:namespace , app , service ,pod等等,要在按照这几个标签查出来的日志中进行模糊匹配(即关键字搜索),该怎么写查询语句?下面这个查询语句无法达到预期,就是不能满足在规定了namespace和application之后,再进行的模糊查询,而结果能匹配我所需要的。实际情况却是,只能查出来namespace=default和app=test下面的所有日志,而不能进一步的匹配包含“goose migrate start”这句话的日志
{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "kubernetes.namespace": "default"
          }
        },
        {
          "term": {
            "kubernetes.labels.application": "test"
          }
        }
      ],
      "should": [
        {
          "match_phrase": {
            "log": {
              "query": "goose migrate start",
              "slop":  50
            }
          }
        }
      ]
    }
  }

laoyang360 - 《一本书讲透Elasticsearch》作者,Elastic认证工程师 [死磕Elasitcsearch]知识星球地址:http://t.cn/RmwM3N9;微信公众号:铭毅天下; 博客:https://elastic.blog.csdn.net

赞同来自:

你全用的termquery是精确匹配的方式。
模糊匹配,你需要查下wilardquery, matchquery等的匹配方法。

要回复问题请先登录注册