zoukankan      html  css  js  c++  java
  • elasticsearch 通过HTTP RESTful API 操作数据

    1.检查es版本信息

    http://IP:9200
    curl 'IP:9200

     

    2.查看集群是否健康

    http://IP:9200/_cat/health?v
    curl 'IP:9200/_cat/health?v'

    3.查看节点列表

    http://IP:9200/_cat/nodes?v
    curl 'IP:9200/_cat/nodes?v'

    4.列出所有索引及存储大小

    http://IP:9200/_cat/indices?v
    curl 'IP:9200/_cat/indices?v'

    5.创建简单索引

     使用postman工具

    curl -XPUT IP:9200/索引名称(小写)

    6.创建复杂索引

    curl -XPUT IP:9200/索引名称/ -d '{
        "settings":{
               "number_of_shards":1,     //设置分片数量
               "number_of_replicas":2,  //设置副本数量
               //自定义索引默认分析器
               "index":{
                      "analysis":{
                             "analyzer":{
                                    "default":{
                                           "tokenizer":"standard",     //分词器
                                           "filter":[ //过滤器
                                                  "asciifolding",
                                                  "lowercase",
                                                  "ourEnglishFilter"
                                           ]
                                    }
                             },
                             "filter":{
                                    "ourEnglishFilter":{
                                           "type":"kstem"
                                    }
                             }
                      }
               }
        }
    }'

    7.分片设置

    number_of_shards
    每个索引的主分片数,默认值是 5 。这个配置在索引创建后不能修改。
    number_of_replicas

    每个主分片的副本数,默认值是 1 。对于活动的索引库,这个配置可以随时修改。例如,我们可以创建只有 一个主分片,没有副本的小索引:

    PUT IP:9200/索引名称
    {
        "settings": {
        "number_of_shards" :   1,
        "number_of_replicas" : 0
        }
    }

    更改副本数量:

    PUT IP:9200/索引名称/_settings
    {
        "number_of_replicas": 2
    }

    每次更改分片之后可以使用

    GET IP:9200/索引名称/_search_shards 

    来查询索引信息

    8.创建mapping

    首先查看刚刚创建的索引的mapping是什么样子的

    htt://IP:9200/索引名称/_mapping

    可见新建的索引中,mapping是一个空集,所以我们就要创建这个index的mapping

    curl -POST IP:9200/索引名称/索引类型/_mapping?pretty -d '{
      索引类型: {
        "properties": {
          "title": {
            "type": "text",
            "store": "true"
          },
          "description": {
            "type": "text",
            "index": "false"
          },
          "price": {
            "type": "double"
          },
          "onSale": {
            "type": "boolean"
          },
          "type": {
            "type": "integer"
          },
          "createDate": {
            "type": "date"
          }
        }
      }
    }'

    9.插入数据

    curl -POST IP:9200/索引名称/索引类型 -d '{
      "title": "test title 001",
      "description": "this is a random desc ",
      "price": 22.6,
      "onSale": "true",
      "type": 2,
      "createDate": "2018-01-12"
    }'

     然后查询一下所有数据,默认为match_all

    curl -GET IP:9200/索引名称/索引类型/_search

    按ID进行查询

    curl -GET IP:9200/索引名称/索引类型/ID

    10.直接创建索引并插入文档

    curl -PUT  IP:9200/索引名称/索引类型/文档ID -d '{
      "title": "test title 003",
      "description": "this is a random desc ",
      "price": 22.6,
      "onSale": "true",
      "type": 2,
      "createDate": "2018-01-12"
    }'

    11.轻量搜索

    • 检索全部
    curl IP:9200/索引名称/_search?pretty

    curl -XPOST localhost:9200/索引名称/_search?pretty -d "{"query": {"match_all": {} }}"

    query:告诉我们定义查询 
    match_all:运行简单类型查询指定索引中的所有文档

    • match_all & 只返回前两个文档
    curl -XPOST IP:9200/索引名称/_search?pretty -d "{"query": {"match_all": {} }, "size" : 2}"

     如果不指定size,默认是返回10条文档信息

    • match_all & 返回第11到第20的10个文档信息 & 降序排序
    curl -XPOST IP:9200/索引名称/_search?pretty -d "{"query": {"match_all": {} }, "from" : 10, "size" : 10,"sort" : {"timestamp" : {"order" : "desc" }}}"

    from:指定文档索引从哪里开始,默认从0开始 
    size:从from开始,返回多个文档 
    sort:排序,排序字段与排序方式
    这feature在实现分页查询很有用

    • 比如只返回title和description两个字段
    curl -XPOST IP:9200/索引名称/_search?pretty -d "{"query": {"match_all": {} }, "_source": ["title", "description"]}"

    • 返回 name=student60
    curl -XPOST IP:9200/索引名称/_search?pretty -d "{"query": {"match": {"name": "student60" } }}"

    • 返回 title=test
    curl -XPOST IP:9200/索引名称/_search?pretty -d "{"query": {"match": {"title": "test" } }}"

    • 返回 title=005 or name=007
    curl -XPOST IP:9200/索引名称/_search?pretty -d "{"query": {"match": {"title": "005 007" } }}"

    • 返回 短语匹配 title=title 007
    curl -XPOST IP:9200/索引名称/_search?pretty -d "{"query": {"match_phrase": {"title": "title 007" } }}"

    • 布尔值(bool)查询 返回 title=title & title=007
    curl -XPOST IP:9200/索引名称/_search?pretty -d "{"query": {"bool": {"must": [{"match": {"title": "title" }},{"match": {"title": "007" }}]}}}"

     must:要求所有条件都要满足(类似于&&)

    • 返回 title=007 or title=005
    curl -XPOST IP:9200/索引名称/_search?pretty -d "{"query": {"bool": {"should": [{"match": {"title": "007" }},{"match": {"title": "005" }}]}}}"
    

    should:任何一个满足就可以(类似于||)

    • 返回 不匹配title=007 & title=005
    curl -XPOST IP:9200/索引名称/_search?pretty -d "{"query": {"bool": {"must_not": [{"match": {"title": "007" }},{"match": {"title": "005" }}]}}}"
    

    must_not:所有条件都不能满足(类似于! (&&))

    • 返回 type=2 & title!=005
    curl -XPOST IP:9200/索引名称/_search?pretty -d "{"query": {"bool": {"must": [{"match": {"type": 2 }}],"must_not": [{"match": {"title": "005" }}]}}}"

    12. 配置分析器使用

    不指定索引

    指定索引及分析器

  • 相关阅读:
    使用事务和SqlBulkCopy导入大批量数据
    Windows Server中禁止Administrator用户登录远程桌面
    SQL和C#的常用时间日期处理
    转:SQL Server数据库查询速度慢的原因
    火把节之夜,想发飙
    判断一个字符串是否为空
    .net中的using批注
    [转帖]删除鼠标右键的“用阿里旺旺打开此文件”的命令
    近凌晨12点却毫无睡意
    SQL SERVER取得汉字的拼音缩写
  • 原文地址:https://www.cnblogs.com/gmhappy/p/9472386.html
Copyright © 2011-2022 走看看