zoukankan      html  css  js  c++  java
  • elasticsearch 查询数据

    一、随机获取数据

    • query 的同级下添加下面代码
    "sort": {
        "_script": { 
          "script": "Math.random()",
          "type": "number"
        }
    }
    

    二、模糊查询

    1、prefix 前缀查询

    • prefix 前缀查询,查询 id 以 “aa-” 开头的数据,_source 段值为查询后需要返回的字段
    GET 索引名/_search
    {
      "query": {
        "bool": {
          "filter": [
            {
              "prefix": {
                "id": "aa-"
              }
            }
          ]
        }
      },
      "_source": ["title","id"]
    }
    

    2、wildcard 通配符查询

    • wildcard 通配符查询, 查询 id 以 “aa-” 开头的数据
    GET 索引名/_search
    {
      "query": {
        "bool": {
          "filter": [
            {
              "wildcard": {
                "id": "aa-*"
              }
            }
          ]
        }
      },
      "_source": ["title","id"]
    }
    
    通配符 含义 实例
    * 匹配 0 或多个字符 a*b,a与b之间可以有任意长度的任意字符, 也可以一个也没有, 如 aabcb, axyzb, a012b, ab
    ? 匹配任意单个字符 a?b,a与b之间有且只有一个字符, 可以是任意字符, 如 aab, abb, acb, a0b
    [list] 匹配 list 中的任意单个字符 a[xyz]b,a与b之间必须也只能有一个字符, 但只能是 x 或 y 或 z, 如 axb, ayb, azb。
    [!list] 匹配除 list 中的任意单一字符 a[!0-9]b,a与b之间必须也只能有一个字符, 但不能是阿拉伯数字, 如 axb, aab, a-b。
    [c1-c2] 匹配 c1-c2 中的任意单一字符 a[0-9]b,匹配0与9之间其中一个字符,如 a0b, a1b… a9b
    {s1,s2,…} 匹配 s1 或 s2 (或更多)中的一个字符串 a{abc,xyz,123}b,a与b之间只能是abc或xyz或123这三个字符串之一

    3、regexp 正则查询

    GET 索引名/_search
    {
      "query": {
        "bool": {
          "filter": [
            {
              "regexp": {
                "id": "aa-.*"
              }
            }
          ]
        }
      },
      "_source": ["title","id"]
    }
    

    三、多字段查询 best_fields、most_fields、cross_fields

    参考链接:https://elastic.blog.csdn.net/article/details/111412721

    四、通用查询方法

    $elastickeyboard['query']['bool']['must'][] = array(
       'bool'=>array(
         'must_not' => array(
            'match'=>array(
              'id' => $sucaiid
           )
         )
       )
    );
    # 需要添加查询条件继续使用 $elastickeyboard['query']['bool']['must'][] = array(...) 即可,追加进 must 数组,相当于 mysql 的 and 查询
    

    五、查询某个字段为空的数据

    GET 索引名/_search
    {
      "query": {
        "bool": {
          "must": [
            {
              "match": {
                "cate1": "PPT背景音乐"
              }
            },
            {
              "bool": {
                "must_not": {
                  "exists": {
                    "field": "downpath"
                  }
                }
              }
            }
          ]
        }
      }
    }
    
  • 相关阅读:
    mac使用ssh出现permission denied(publickey)
    mac下解压bin文件
    Lint found fatal errors while assembling a release target问题的解决方案
    Cloud Foundry 组件
    maven中的groupId和artifactId到底指的是什么
    SpringBoot之常用注解
    Kafka系列文章
    [转]Kafka 设计与原理详解
    十张图了解Docker【转】
    四层、七层负载均衡的区别
  • 原文地址:https://www.cnblogs.com/aze999/p/14986044.html
Copyright © 2011-2022 走看看