• Elasticsearch-查询


    模糊查询

    {
      "query": {
        "bool": {
          "must": [
            {
              "wildcard": {
                "assets": "*0206*"
              }
            },
            {
              "wildcard": {
                "assets": "*122.14.230.69*"
              }
            }
          ]
        }
      }
    }
    

    想找到所有title字段以cri开始的文档

    {
        "query":{
            "prefix":{
                "title":"cri"
            }
        }
    }
    

    只看查询出来的某些字段 "_source"

    {
      "query": {
        "match_all": {}
      },
      "_source": "user_name"
    }
    

    用户向搜索框中输入单词crme,而不是crime,运行模糊查询的最简单形式

    {
        "query":{
            "fuzzy":{
                "title":"crme"
            }
        }
    }
    

    通配符查询允许我们在查询值中使用*和?等通配符。此外,通配符查询跟词条查询在内容方面非常类似。可以发送一下查询,来匹配所有包含cr?me词条的文档,这里?表示任意字符:

    {
        "query":{
            "wildcard":{
                "title":"cr?me"
            }
        }
    }
    

    范围查新,要找到year字段从1700到1900的所有图书,可以运行以下查询:

    {
        "query":{
            "range":{
                "year":{
                    "gte":1700,
                    "lte":1900
                }
            }
        }
    }
    
     gte:范围查询将匹配字段值大于或等于此参数值的文档。
     gt:范围查询将匹配字段值大于此参数值的文档。
     lte:范围查询将匹配字段值小于或等于此参数值的文档。
     lt:范围查询将匹配字段值小于此参数值的文档。
    

    正则表达式查询示例如下所示:

    {
        "query":{
            "regexp":{
                "title":{
                    "value":"cr.m[ae]",
                    "boost":10
                }
            }
        }
    }
    

    假设我们想要找到所有这样的文档:在title字段中含有crime词条,并且year字段可以在也可以不在1900~2000的范围里,在otitle字段中不可以包含nothing词条。用布尔查询的话,类似于下面的代码:

    {
        "query":{
            "bool":{
                "must":{
                    "term":{
                        "title":"crime"
                    }
                },
                "should":{
                    "range":{
                        "year":{
                            "from":1900,
                            "to":2000
                        }
                    }
                },
                "must_not":{
                    "term":{
                        "otitle":"nothing"
                    }
                }
            }
        }
    }
    

    在title字段搜索Catch-22并向其添加过滤器.它返回给定title的所有文档,但结果缩小到仅在1961年出版的书

    {
        "query":{
            "match":{
                "title":"Catch-22"
            }
        },
        "post_filter":{
            "term":{
                "year":1961
            }
        }
    }
    

    查新排序

    {
      "query": {
        "match_all": {}
      },
      "sort": [
        {
          "collect_time": {
            "order": "desc"
          }
        }
      ]
    }
    或
    {
      "query": {
        "match_all": {}
      },
      "sort": [
        {
          "collect_time": "desc"
        }
      ]
    }
    
  • 相关阅读:
    uboot的仓库在哪里?
    git如何查看执行过的历史git命令
    for(;;)和while(true)的区别
    CountDownLatch的理解和使用
    countDownLatch
    websocket @ServerEndpoint(value = "/websocket/{ip}")详解
    Java原子性操作之——Atomic包的原理分析
    CAS原理
    java线程池ThreadPoolExecutor的keepAliveTime=0时,表示超过core线程数的线程在空闲时立即结束!!!
    ThreadPoolExecutor 线程池Demo
  • 原文地址:https://www.cnblogs.com/shangwei/p/13434920.html
Copyright © 2020-2023  润新知