elasticsearch - 基础操作01


GET _search
{
  "query": {
    "match_all": {}
  }
}

# 1 基础操作
PUT s18/doc/1
{
  "name": "大刀"
}

PUT s18/doc/2
{
  "name": "鹏程"
}

GET s18/doc/1

GET s18/doc/_search?q-name:laowang

GET s18/doc/_search

DELETE s18/doc/1

DELETE s18

GET s18/_mapping

GET s18/_settings

GET s18

# 2 CURD之p

PUT zhifou/doc/1
{
  "name":"顾老二",
  "age":18,
  "sex":"男",
  "from": "gu",
  "desc": "皮肤黑、武器长、性格直",
  "tags": ["黑", "长", "直"]
}

PUT zhifou/doc/2
{
  "name":"大娘子",
  "age":18,
  "sex":"女",
  "from":"sheng",
  "desc":"肤白貌美,娇憨可爱",
  "tags":["白", "富","美"]
}

PUT zhifou/doc/3
{
  "name":"龙套偏房",
  "age":22,
  "sex":"男",
  "from":"gu",
  "desc":"mmp,没怎么看,不知道怎么形容",
  "tags":["造数据", "真","难"]
}

PUT zhifou/doc/4
{
  "name":"石头",
  "age":29,
  "sex":"男",
  "from":"gu",
  "desc":"粗中有细,狐假虎威",
  "tags":["粗", "大","猛"]
}

PUT zhifou/doc/5
{
  "name":"魏行首", 
  "age":25,
  "sex":"男",
  "from":"广云台",
  "desc":"仿佛兮若轻云之蔽月,飘飘兮若流风之回雪,mmp,最后竟然没有嫁给顾老二!",
  "tags":["闭月","羞花"]
}

GET zhifou/doc/1


POST zhifou/doc/1/_update
{
  "doc":{
  "desc":"皮肤很黄,武器很长,性格很直",
  "tags":["很黄","很长", "很直"]
  }
}

# 字符串查询
GET zhifou/doc/_search?q=age:25

# 结构化查询
GET zhifou/doc/_search
{
  "query": {
    "match": {
      "age": "25"
    }
  }
}

# select all 排序 数字
GET zhifou/doc/_search 
{
  "query":{
    "match_all":{}
  },
  "sort":{
    "age":{
      "order":"desc"
    }
  }
}

# 分页查询
 GET zhifou/doc/_search
 {
   "query":{
     "match_all": {}
   },
   "from":0,
   "size": 2
 }

# 布尔 bool 查询: should(or) must(and) must_not(not)
GET zhifou/doc/_search
{
  "query": {
    "bool": {
      "should":[
        {
        "match":{
         "sex":"男"
        }
      },{
        "match": {
          "age": "18"
        }
      }

      ]
    }
  }
}

# 布尔 bool 查询 : 大于(gt), 大于等(gte), 小于(le),小于等于(lte)
GET zhifou/doc/_search
{
  "query": {
    "bool": {
      "must":[
        {
        "match":{
         "sex":"男"
        }
      }
    ],
      "filter": {
        "range": {
          "age":{
            "lte": 25
          }
        }
      }
    }
  }
}

# 高亮查询

GET zhifou/doc/_search
{
  "query": {
    "match": {
      "name": "顾老二"
    }
  },
  "highlight": {
    "fields": {
      "name": {}
    }
  }
}

GET zhifou/doc/_search
{
  "query": {
    "match": {
      "name": "顾老二"
    }
  },
  "highlight": {
    "pre_tags": "<b style='color:red', font-size:20px>",
    "post_tags": "</b>", 
    "fields": {
      "name": {}
    }
  }
}

# 结果过滤

GET zhifou/doc/_search
{
  "query": {
    "match":{
    "name":"顾老二"
    }
  },
  "_source": ["age","desc"]
}

# 聚合查询 min, max, avg
GET zhifou/doc/_search
{
  "query": {
    "match": {
      "sex": "男"
    }
  }, 
  "aggs": {
    "my_min": {
      "min": {
        "field": "age"
      }
    }
  }
}

# 聚合查询 分组
GET zhifou/doc/_search
{
  "query": {
    "match": {
      "sex": "男"
    }
  }, 
  "aggs": {
    "group": {
      "range": {
        "field": "age",
        "ranges": [
          {
            "from": 0,
            "to": 10
          },
          {
            "from": 10,
            "to": 20
          },
          {
            "from": 20,
            "to":30
          }
        ]
      }
    }
  }
}


# mapping的dynamic的三种状态, true, false, strict

DELETE s1

PUT s1
{
  "mappings": {
    "doc":{
      "dynamic":true,
      "properties":{
        "name":{
          "type":"text"
        }
      }
    }
  }
}

GET s1/_mapping

PUT s2
{
  "mappings": {
    "doc":{
      "dynamic":false,
      "properties":{
        "name":{
          "type":"text"
        }
      }
    }
  }
}

GET s2/_mapping


PUT s1/doc/1 
{
  "name":"金星",
  "age":12,
  "desc":"金老师的弟弟",
  "tags":"帅"
}

PUT s2/doc/2
{
  "name":"冰玉",
  "age":17,
  "desc":"漂亮的姑娘",
  "tags":"漂亮"
}



GET s1/doc/_search
{
  "query":{
    "match": {
      "name": "金星"
    }
  }
}

GET s2/doc/_search
{
  "query":{
    "match": {
      "age": "17"
    }
  }
}

# 严格设置 index 的字段添加会出错的
PUT s3 
{
  "mappings": {
    "doc":{
      "dynamic":"strict",
        "properties":{
          "name":{
            "type":"text"
          }
        }
    }
  }
}

GET s3/_mapping

PUT s3/doc/1
{
  "name":"he"
}

PUT s3/doc/2
{
  "name":"qiao",
  "age":23
}

GET s3/doc/_search
{
  "query": {
    "match": {
      "name": "he"
    }
  }
}


# mappings 的参数 ignore_above <int> 设备超过多大就不需要设置索引


# mappings 的参数 index <ture, false> 不对这个字段做索引


# mappings 的参数 copy_to , 把某个对应的值 copy 到对应一个字段
DELETE w1

# 嵌套的 index
PUT  w1 
{
  "mappings":{
    "doc":{
      "properties":{
        "name":{
          "type":"text"
        },
        "age":{
          "type":"long"
        },
        "info":{
          "properties":{
            "addr":{
             "type":"text"
          },
            "tel":{
              "type":"long"
          }
        }
      }
    }
  }
}
}

PUT w1/doc/1
{
  "name":"tom",
  "age":19,
  "info":{
    "addr":"北京",
    "tel":1234
  }
}

GET w1/doc/_search
{
  "query": {
    "match": {
      "info.addr": "北京"
    }
  }
}

# 设置主分片

DELETE w2

PUT w2
{
  "mappings":{
    "doc": {
      "properties":{
        "title":{
          "type":"text"
        }
      }
    }
  },
  "settings": {
    "number_of_replicas": 3,
    "number_of_shards": 3
  }
}


# 短语查询最左前缀查询同时查询在多个字段查询

PUT t1/doc/1
{
  "title":"中国是世界人口最多的国家"
}

PUT t1/doc/2
{
  "title":"美国是世界金融中心"
}

PUT t1/doc/3
{
  "title":"中国是美丽的国家"
}

GET t1/doc/_search
{
  "query": {
    "match_phrase": {
      "title": {
        "query": "中国人口",
        "slop": 3
      }
    }
  }
}

PUT t2/doc/1
{
  "title":"beautiful girl"
}


PUT t2/doc/2
{
  "title":"beautiful so"
}

GET t2/doc/_search
{
  "query": {
    "match_phrase_prefix": {
      "title": "beau"
    }
  }
}


PUT t3/doc/1
{
  "t1":"beautiful girl",
  "t2":"beautiful so"
}

GET t3/doc/_search
{
  "query": {
    "multi_match": {
      "query": "so",
      "fields": ["t1","t2"]
    }
  }
}

POST _analyze
{
  "analyzer": "standard",
  "text": "我是最帅气的人"
}

POST _analyze
{
  "analyzer": "snowball",
  "text": "我是最帅气的人"
}

GET _cat/indices