数据准备

# 创建索引
PUT /lib1
{
 "settings": {
   "number_of_shards": 5
  , "number_of_replicas": 0
},
 "mappings": {
   "user":{
     "properties": {
       "name":{"type":"text"},
       "adress":{"type":"text"},
       "age":{"type":"integer"},
       "interests":{"type":"text"},
       "birthday":{"type":"date"}
    }
  }
}
}
# 添加数据
PUT /lib1/user/1
{
 "name":"zhaoliu",
 "adress":"hei long jiang sheng tie ling shi",
 "age":50,
 "birthday":"1970-10-12",
 "interests":"xi huan hejiu,duanlian,lvyou"
}
PUT /lib1/user/2
{
 "name":"zhaoming",
 "adress":"bei ling dian qu qing he zhen",
 "age":20,
 "birthday":"1998-10-12",
 "interests":"xi huan hejiu,duanlian,changge"
}
PUT /lib1/user/3
{
 "name":"lisi",
 "adress":"bei ling dian qu qing he zhen",
 "age":50,
 "birthday":"1998-10-12",
 "interests":"xi huan hejiu,duanlian,lvyou"
}
PUT /lib1/user/4
{
 "name":"wangwu",
 "adress":"bei ling dian qu qing he zhen",
 "age":20,
 "birthday":"1995-10-12",
 "interests":"xi huan hejiu,duanlian,changge"
}
PUT /lib1/user/5
{
 "name":"zhangsan",
 "adress":"bei jing chao yang qu",
 "age":29,
 "birthday":"1988-10-12",
 "interests":"xi huan tingyinyue,changge,lvyou"
}
# 简单条件查询
GET /lib1/user/_search?q=name:lisi
GET /lib1/user/_search?q=interests:changge&sort=age:desc

term查询和terms查询

  • term query回去倒排索引中寻找确切的term,它并不知道分词器的存在。这种查询适合keyword、numeric、date。

  • term:查询某个字段含有某个关键词的文档

    GET /lib1/user/_search
    {
     "query": {
       "term": {
         "name": "zhaoliu"
      }
    }
    }
    # 查询结果
    {
     "took": 2,
     "timed_out": false,
     "_shards": {
       "total": 5,
       "successful": 5,
       "failed": 0
    },
     "hits": {
       "total": 1,
       "max_score": 0.2876821,
       "hits": [
        {
           "_index": "lib1",
           "_type": "user",
           "_id": "1",
           "_score": 0.2876821,
           "_source": {
             "name": "zhaoliuwu",
             "adress": "hei long jiang sheng tie ling shi",
             "age": 49,
             "birthday": "1970-10-12",
             "interests": "xi huan hejiu,duanlian,lvyou"
          }
        }
      ]
    }
    }
  • terms:查询某个字段里含有多个关键词的文档

    # 查询
    GET /lib1/user/_search
    {
     "query": {
       "terms": {
         "interests": ["hejiu","changge"]
      }
    }
    }
    # 查询的结果为interests字段包含heijiu、changge、hejiu和changge的文档
    {
     "took": 5,
     "timed_out": false,
     "_shards": {
       "total": 5,
       "successful": 5,
       "failed": 0
    },
     "hits": {
       "total": 3,
       "max_score": 1.5467954,
       "hits": [
        {
           "_index": "lib1",
           "_type": "user",
           "_id": "2",
           "_score": 1.5467954,
           "_source": {
             "name": "zhaoming",
             "adress": "bei ling dian qu qing he zhen",
             "age": 20,
             "birthday": "1998-10-12",
             "interests": "xi huan hejiu,duanlian,changge"
          }
        },
        {
           "_index": "lib1",
           "_type": "user",
           "_id": "5",
           "_score": 0.2824934,
           "_source": {
             "name": "zhangsan",
             "adress": "bei jing chao yang qu",
             "age": 29,
             "birthday": "1988-10-12",
             "interests": "xi huan tingyinyue,changge,lvyou"
          }
        },
        {
           "_index": "lib1",
           "_type": "user",
           "_id": "1",
           "_score": 0.2824934,
           "_source": {
             "name": "zhaoliuwu",
             "adress": "hei long jiang sheng tie ling shi",
             "age": 49,
             "birthday": "1970-10-12",
             "interests": "xi huan hejiu,duanlian,lvyou"
          }
        }
      ]
    }
    }
    # 指定返回结果为2个文档
    GET /lib1/user/_search
    {
     "from": 0,
     "size": 2,
     "query": {
       "terms": {
         "interests": ["hejiu","changge"]
      }
    }
    }
    # 指定返回结果中含版本号
    GET /lib1/user/_search
    {
     "from": 0,
     "size": 2,    "version": true,  "query": {    "terms": {      "interests": ["hejiu","changge"]   } }}# 查询结果{  "took": 5,  "timed_out": false,  "_shards": {    "total": 5,    "successful": 5,    "failed": 0 },  "hits": {    "total": 3,    "max_score": 1.5467954,    "hits": [     {        "_index": "lib1",        "_type": "user",        "_id": "2",        "_version": 3,        "_score": 1.5467954,        "_source": {          "name": "zhaoming",          "adress": "bei ling dian qu qing he zhen",          "age": 20,          "birthday": "1998-10-12",          "interests": "xi huan hejiu,duanlian,changge"       }     },     {        "_index": "lib1",        "_type": "user",        "_id": "5",        "_version": 2,        "_score": 0.2824934,        "_source": {          "name": "zhangsan",          "adress": "bei jing chao yang qu",          "age": 29,          "birthday": "1988-10-12",          "interests": "xi huan tingyinyue,changge,lvyou"       }     }   ] }}

match查询

  • math query指定分词器的存在,会对filed进行分词操作,然后再查询

    GET /lib1/user/_search
    {
     "query": {
       "match": {
         "name": "zhaoliuwu"
      }
    }
    }
    # 执行结果
    {
     "took": 2,
     "timed_out": false,
     "_shards": {
       "total": 5,
       "successful": 5,
       "failed": 0
    },
     "hits": {
       "total": 1,
       "max_score": 0.2876821,
       "hits": [
        {
           "_index": "lib1",
           "_type": "user",
           "_id": "1",
           "_score": 0.2876821,
           "_source": {
             "name": "zhaoliuwu",
             "adress": "hei long jiang sheng tie ling shi",
             "age": 49,
             "birthday": "1970-10-12",
             "interests": "xi huan hejiu,duanlian,lvyou"
          }
        }
      ]
    }
    }

    # 查询
    GET /lib1/user/_search
    {
     "query": {
       "match": {
         "name": "zhaoliuwu zhaoming"
      }
    }
    }
    # 执行结果
    {
     "took": 4,
     "timed_out": false,
     "_shards": {
       "total": 5,
       "successful": 5,
       "failed": 0
    },
     "hits": {
       "total": 2,
       "max_score": 0.80259144,
       "hits": [
        {
           "_index": "lib1",
           "_type": "user",
           "_id": "2",
           "_score": 0.80259144,
           "_source": {
             "name": "zhaoming",
             "adress": "bei ling dian qu qing he zhen",
             "age": 20,
             "birthday": "1998-10-12",
             "interests": "xi huan hejiu,duanlian,changge"
          }
        },
        {
           "_index": "lib1",
           "_type": "user",
           "_id": "1",
           "_score": 0.2876821,
           "_source": {
             "name": "zhaoliuwu",
             "adress": "hei long jiang sheng tie ling shi",
             "age": 49,
             "birthday": "1970-10-12",          "interests": "xi huan hejiu,duanlian,lvyou"       }     }   ] }}
  • match_all:查询所有文档

    GET /lib1/user/_search
    {
     "query": {
       "match_all": {}
    }
    }
  • multi_match:指定多个字段

    GET /lib1/user/_search
    {
     "query": {
       "multi_match": {
         "query": "changge",
         "fields": ["interests","name"]
      }
    }
    }
  • match_phrase:短语匹配查询

  • ElasticSearch引擎首先分析查询字符串,从分析后的文本中构建短语查询,这意味着必须匹配短语中的所有分词,并且保证各个分词的相对位置不变

    GET /lib1/user/_search
    {
     "query": {
       "match_phrase": {
         "interests": "duanlian,changge"
      }
    }
    }
    # 执行结果
    {
     "took": 12,
     "timed_out": false,
     "_shards": {
       "total": 5,
       "successful": 5,
       "failed": 0
    },
     "hits": {
       "total": 1,
       "max_score": 1.5467954,
       "hits": [
        {
           "_index": "lib1",
           "_type": "user",
           "_id": "2",
           "_score": 1.5467954,
           "_source": {
             "name": "zhaoming",
             "adress": "bei ling dian qu qing he zhen",
             "age": 20,
             "birthday": "1998-10-12",
             "interests": "xi huan hejiu,duanlian,changge"
          }
        }
      ]
    }
    }
  • 指定查询字段

    # 指定查询字段
    GET /lib1/user/_search
    {
     "_source": {
       "includes": ["name","adress"]
    },
     "query": {
       "match_all": {}
    }
    }
    # 排除查询字段
    GET /lib1/user/_search
    {
     "_source": {
       "excludes": ["name","adress"]
    },
     "query": {
       "match_all": {}
    }
    }
    # 通配符匹配查询字段
    GET /lib1/user/_search
    {
     "_source": {
       "includes":"adr*",
       "excludes": ["name","bir*"]
    },
     "query": {
       "match_all": {}
    }
    }
    # 执行结果
    {
     "took": 8,
     "timed_out": false,
     "_shards": {
       "total": 5,
       "successful": 5,
       "failed": 0
    },
     "hits": {
       "total": 5,
       "max_score": 1,
       "hits": [
        {
           "_index": "lib1",
           "_type": "user",
           "_id": "5",
           "_score": 1,
           "_source": {
             "adress": "bei jing chao yang qu"
          }
        },
        {
           "_index": "lib1",
           "_type": "user",
           "_id": "4",
           "_score": 1,
           "_source": {
             "adress": "北京海淀区清河"
          }
        },
        {
           "_index": "lib1",
           "_type": "user",
           "_id": "2",
           "_score": 1,
           "_source": {
             "adress": "bei ling dian qu qing he zhen"
          }
        },
        {
           "_index": "lib1",
           "_type": "user",
           "_id": "1",
           "_score": 1,
           "_source": {
             "adress": "hei long jiang sheng tie ling shi"
          }
        },
        {
           "_index": "lib1",
           "_type": "user",
           "_id": "3",
           "_score": 1,        "_source": {          "adress": "北京海淀区清河"       }     }   ] }}

排序

  • 使用sort实现排序:desc降序,asc升序

    GET /lib1/user/_search
    {
     "query": {
       "match_all": {}
    },
     "sort": [
      {
         "age": {
           "order": "desc"
        }
      }
    ]
    }
    GET /lib1/user/_search
    {
     "query": {
       "match_all": {}
    },
     "sort": [
      {
         "age": {
           "order": "asc"
        }
      }
    ]
    }

前缀匹配

GET /lib1/user/_search
{
 "query": {
   "match_phrase_prefix": {
     "name": {
       "query": "zhao"
    }
  }
}
}

范围查询

# []
GET /lib1/user/_search
{
 "query": {
   "range": {
     "birthday": {
       "from": "1990-10-10",
       "to": "2018-05-01"
    }
  }
}
}
# ()
GET /lib1/user/_search
{
 "query": {
   "range": {
     "birthday": {
       "from": "1995-10-12",
       "to": "1998-10-12",
       "include_lower":false,
       "include_upper":false
    }
  }
}
}
GET /lib1/user/_search
{
 "query": {
   "range": {
     "age": {
       "gte": 20,
       "lte": 28
    }
  }
}
}

wildcard查询

  • 允许使用通配符*和?来进行查询

    • *代表0个或多个字符

    • ?代表任意一个字符

    GET /lib1/user/_search
    {
     "query": {
       "wildcard": {
         "name": {
           "value": "li?i"
        }
      }
    }
    }
    GET /lib1/user/_search
    {
     "query": {
       "wildcard": {
         "name": "zhao*"
      }
    }
    }

fuzzy实现模糊查询

  • value:查询的关键字

  • boost:查询的权值,默认值是1.0

  • min_similarity:设置匹配的最小相似度,默认值是0.5,对于字符串,取值为0-1(包括0和1);对于数值,取值可能大于1;对于日期型取值为1d,1m等。

  • prefix_length:指名区分词项的共同前缀长度,默认是0

  • max_expansion:查询中的词项可以扩展的数目,默认可以无限大

    # 查询
    GET /lib1/user/_search
    {
     "query": {
       "fuzzy": {
         "name":"zhliuwu"
      }
    }
    }
    # 查询结果
    {
     "took": 5,
     "timed_out": false,
     "_shards": {
       "total": 5,
       "successful": 5,
       "failed": 0
    },
     "hits": {
       "total": 1,
       "max_score": 0.2054872,
       "hits": [
        {
           "_index": "lib1",
           "_type": "user",
           "_id": "1",
           "_score": 0.2054872,
           "_source": {
             "name": "zhaoliuwu",
             "adress": "hei long jiang sheng tie ling shi",
             "age": 49,
             "birthday": "1970-10-12",
             "interests": "xi huan hejiu,duanlian,lvyou"
          }
        }
      ]
    }
    }

    # 查询
    GET /lib1/user/_search
    {
     "query": {
       "fuzzy": {
         "interests": {
           "value": "chagge"
        }
      }
    }
    , "highlight": {
       "fields": {
         "interests": {}
      }
    }
    }
    # 执行结果
    {
     "took": 43,
     "timed_out": false,
     "_shards": {
       "total": 5,
       "successful": 5,
       "failed": 0
    },
     "hits": {
       "total": 2,
       "max_score": 0.64449805,
       "hits": [
        {
           "_index": "lib1",
           "_type": "user",
           "_id": "2",
           "_score": 0.64449805,
           "_source": {
             "name": "zhaoming",
             "adress": "bei ling dian qu qing he zhen",
             "age": 20,
             "birthday": "1998-10-12",
             "interests": "xi huan hejiu,duanlian,changge"
          },
           "highlight": {
             "interests": [
               "xi huan hejiu,duanlian,<em>changge</em>"
            ]
          }
        },
        {
           "_index": "lib1",
           "_type": "user",        "_id": "5",        "_score": 0.23541118,        "_source": {          "name": "zhangsan",          "adress": "bei jing chao yang qu",          "age": 29,          "birthday": "1988-10-12",          "interests": "xi huan tingyinyue,changge,lvyou"       },        "highlight": {          "interests": [            "xi huan tingyinyue,<em>changge</em>,lvyou"         ]       }     }   ] }}

高亮搜索结果

GET /lib1/user/_search
{
 "query": {
   "match": {
     "interests": "changge"
  }
},
 "highlight": {
   "fields": {"interests": {}}
}
}
# 查询结果
{
 "took": 6,
 "timed_out": false,
 "_shards": {
   "total": 5,
   "successful": 5,
   "failed": 0
},
 "hits": {
   "total": 2,
   "max_score": 0.7733977,
   "hits": [
    {
       "_index": "lib1",
       "_type": "user",
       "_id": "2",
       "_score": 0.7733977,
       "_source": {
         "name": "zhaoming",
         "adress": "bei ling dian qu qing he zhen",
         "age": 20,
         "birthday": "1998-10-12",
         "interests": "xi huan hejiu,duanlian,changge"
      },
       "highlight": {
         "interests": [
           "xi huan hejiu,duanlian,<em>changge</em>"
        ]
      }
    },
    {
       "_index": "lib1",
       "_type": "user",
       "_id": "5",
       "_score": 0.2824934,
       "_source": {
         "name": "zhangsan",
         "adress": "bei jing chao yang qu",
         "age": 29,
         "birthday": "1988-10-12",
         "interests": "xi huan tingyinyue,changge,lvyou"
      },
       "highlight": {
         "interests": [
           "xi huan tingyinyue,<em>changge</em>,lvyou"
        ]
      }
    }
  ]
}
}

ES基本查询的更多相关文章

  1. ES 复合查询

    ES在查询过程中比较多遇到符合查询,既需要多个字段过滤也需要特殊情况处理,本文简单介绍几种查询组合方便快捷查询ES. bool布尔查询有一个或者多个布尔子句组成     filter 只过滤符合条件的 ...

  2. es的查询、排序查询、分页查询、布尔查询、查询结果过滤、高亮查询、聚合函数、python操作es

    今日内容概要 es的查询 Elasticsearch之排序查询 Elasticsearch之分页查询 Elasticsearch之布尔查询 Elasticsearch之查询结果过滤 Elasticse ...

  3. ES高级查询

    Query Content 在查询过程中,除了判断文档是否满足查询条件外,ES还会计算一个_score来标识匹配的程度,旨在判断目标文档和查询条件的匹配有多好 # POST 192.168.100.1 ...

  4. ES 20 - 查询Elasticsearch中的数据 (基于DSL查询, 包括查询校验match + bool + term)

    目录 1 什么是DSL 2 DSL校验 - 定位不合法的查询语句 3 match query的使用 3.1 简单功能示例 3.1.1 查询所有文档 3.1.2 查询满足一定条件的文档 3.1.3 分页 ...

  5. [ES]Python查询ES导出数据为Excel

    版本 elasticsearch==5.5.0 python==3.7 说明 用python查询es上存储的状态数据,将查询到的数据用pandas处理成excel code # -*- coding: ...

  6. 面试系列九 es 提高查询效率

    ,es性能优化是没有什么银弹的,啥意思呢?就是不要期待着随手调一个参数,就可以万能的应对所有的性能慢的场景.也许有的场景是你换个参数,或者调整一下语法,就可以搞定,但是绝对不是所有场景都可以这样. 一 ...

  7. ES模糊查询来对应mysql的like查询

    使用ES查询来对应mysql的like查询 建立一个测试索引 PUT /test_like1 { "mappings" : { "properties" : { ...

  8. es crul查询(一)

    C:\Users\Administrator>elasticdump --input=D:\test --output=http://localhost:9200/logs_apipki_201 ...

  9. ES系列十、ES常用查询API

    1.term查询 { "query": { "term": { "title": "crime" } } } 1.1.指 ...

随机推荐

  1. spring读取properties的几种方式

    参考链接:http://www.cnblogs.com/zxf330301/p/6184139.html

  2. 糟糕的@@identity,SCOPE_IDENTITY ,IDENT_CURRENT

    在某数据库里面,某甲用@@identity来获取最近插入的id值,当在多人环境,发生获取到null值的问题. 那么@@identity是否有存在的必要? 感觉像生个孩子,多了个指头. 有的数据库的ge ...

  3. ubuntu如何实现双屏显示

    转载自https://blog.csdn.net/tianmaxingkong_/article/details/50570538

  4. [SoapUI] 通过JSONAssert比较两个环境的JSON Response,定制化错误信息到Excel

    package ScriptLibrary; import org.json.JSONArray; import org.json.JSONException; import org.json.JSO ...

  5. 如何查看Python内置模块的实现代码

    方法1:使用help(random) >>> import random >>> help(random) Help on module random: NAME ...

  6. mysql 设置外键 四大属性 CASCADE SET NULL NO ACTION RESTRICT 理解

    CASCADE:主表delete.update的时候,从表会delete.update掉关联记录: SET NULL:主表delete.update的时候,从表会将关联记录的外键字段所在列设为null ...

  7. 牛客训练二:处女座的签到题(STL+精度+三角形求面积公式)

    题目链接:传送门 知识点: (1)三个点,三角形求面积公式 (2)精度问题: double 15-16位(参考文章) float 6-7位 long long 约20位 int 约10位 unsign ...

  8. Tomcat架构解析(四)-----Coyote、HTTP、AJP、HTTP2等协议

    Connector是Tomcat中非常重要的一个组成部分,说白了,就是如何从客户端获取到相应的请求信息.这部分主要包括的难点有这样几个部分: 1.客户端与服务端的协议 客户端与服务端的协议是多种多样的 ...

  9. vue中使用promise.all发送多个请求

    1.创建两个promise,在promise中使用axios 2.调用Promise.all([p1,p2]).then(res=>{}).catch(err=>{})方法 代码如下: & ...

  10. 百度图片http://img[0-9]\.imgtn.*?g此形式的链接图片下载方式

    """给出图片链接列表, 下载图片""" print(pic_urls) for pic_url in pic_urls: try: hos ...