ElasticSearch入门到精通-1.ElasticSearch安装、索引、CRUD

1.ElasticSearch安装

  • elasticsearch下载安装

https://www.elastic.co/cn/downloads/

  • elasticsearch-head插件

https://github.com/mobz/elasticsearch-head
git clone git://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head
npm install
npm run start
open http://localhost:9100/

  • elasticsearch改配置,使elasticsearch-head插件能跨域访问

config elasticsearch.yml

bootstrap.memory_lock: false
cluster.name: my-elasticsearch-application
http.port: 9200
network.host: 127.0.0.1
node.data: true
node.ingest: true
node.master: true
node.max_local_storage_nodes: 1
node.name: ElasticSearch Master
path.data: D:\Program Files\Elastic\Elasticsearch\data
path.logs: D:\Program Files\Elastic\Elasticsearch\logs
transport.tcp.port: 9300
xpack.license.self_generated.type: basic
xpack.security.enabled: true
http.cors.enabled: true
http.cors.allow-origin: "*"

2.ElasticSearch添加索引

  • head插件
    elasticsearch-head1.png

    elasticsearch-head2.png

    elasticsearch-head3.png
    {
      "novel": {
        "properties": {
          "title": {
            "type": "text"
          }
        }
      }
    }
    
  • postman
    postman.png
    {
          "settings": {
              "number_of_shards": 3,
              "number_of_replicas": 1
          },
          "mappings": {
              "man": {
                  "properties": {
                      "name": {
                          "type": "text"
                      },
                      "country": {
                          "type": "keyword"
                      },
                      "age": {
                          "type": "integer"
                      },
                      "date": {
                          "type": "date",
                          "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
                      }
                  }
              },
              "woman": {
              
              }
          }
      }
    

    elasticsearch-6.7.2版本mappings下不支持[woman, man]两个索引,把woman那个删除。

3.ElasticSearch的增删改查

    • 指定id为1的增

      127.0.0.1:9200/people/man/1 put


      postman1.png
    • 不指定id

      127.0.0.1:9200/people/man post


      postman2.png
  • 127.0.0.1:9200/people/man/YzAIE24B3Dw_V0_L1AaA delete


    postman3.png
    • 直接在之前数据上更改
      postman4.png
    • 用_update 127.0.0.1:9200/people/man/1/_update post
      postman5.png
    • 使用script
      postman6.png
  • 插入数据源
    
    import requests
    import random
    import json
    
    
    def main():
        language = ['C', 'Java', 'Python', 'ElasticSearch']
        author = ['张三', '李四', '王五', '赵六']
        level = ['入门', '熟悉', '精通']
        id = 0
        url = 'http://127.0.0.1:9200/book/novel/'
        headers = {'Content-Type': 'application/json;charset=UTF-8'}
        for i in language:
            for j in level:
                id += 1
                data = {
                    'author': author[language.index(i)],
                    'title': i + j,
                    'word_count': random.randint(50, 150) * 100,
                    'publish_date': '2019-' + ('0' if id < 10 else '') + str(id) + '-01'
                }
                print(data)
                r = requests.post(url + str(id), json.dumps(data), headers=headers)
                print(r.content)
    
    
    if __name__ == '__main__':
        main()
    
    
    elasticsearch数据浏览.png
    • GET 127.0.0.1:9200/book/novel/1

      postman7.png
    • POST 127.0.0.1:9200/book/_search 查询所有

      postman8.png
      查询全部数据
      {
          "query": {
              "match_all": {}
          }
      }
      
      查询一条数据
      {
          "query": {
              "match_all": {}
          },
          "from": 1,
          "size": 1
      }
      
      关键词查询
      {
          "query": {
              "match": {
                  "title": "ElasticSearch"
              }
          }
      }
      
      关键词查询按日期降序
      {
          "query": {
              "match": {
                  "title": "ElasticSearch"
              }
          },
          "sort": [
              {
                  "publish_date": {
                      "order": "desc"
                  }
              }
          ]
      }
      
      聚合查询
      {
          "aggs": {
              "group_by_word_count": {
                  "terms": {
                      "field": "word_count"
                  }
              },
              "group_by_publish_date": {
                  "terms": {
                      "field": "publish_date"
                  }
              }
          }
      }
      
      统计
      {
          "aggs": {
              "grades_word_count": {
                  "stats": {
                      "field": "word_count"
                  }
              }
          }
      }
      
      最小值
      {
          "aggs": {
              "grades_word_count": {
                  "min": {
                      "field": "word_count"
                  }
              }
          }
      }
      

4.ElasticSearch高级查询

  • 子条件查询 特定字段查询所指特定值

    • Query context

      ElasticSearch Query context1.png

      ElasticSearch Query context2.png
      模糊匹配
      {
          "query": {
              "match": {
                  "title": "ElasticSearch入门"
              }
          }
      }
      
      精准匹配
      {
          "query": {
              "match_phrase": {
                  "title": "ElasticSearch入门"
              }
          }
      }
      
      多字段匹配
      {
          "query": {
              "multi_match": {
                  "query": "ElasticSearch",
                  "fields": ["author", "title"]
              }
          }
      }
      
      语法查询
      {
          "query": {
              "query_string": {
                  "query": "(ElasticSearch AND 入门) OR Python"
              }
          }
      }
      
      {
          "query": {
              "query_string": {
                  "query": "ElasticSearch OR 张三",
                  "fields": ["title", "author"]
              }
          }
      }
      
      字段查询
      {
          "query": {
              "term": {
                  "word_count": 5700
              }
          }
      }
      
      {
          "query": {
              "term": {
                  "author": "张三"
              }
          }
      }
      
      字数范围 5000 <= word_count <= 8000
      {
          "query": {
              "range": {
                  "word_count": {
                      "gte": 5000,
                      "lte": 8000
                  }
              }
          }
      }
      
      字数范围 5000 < word_count <= 8000
      {
          "query": {
              "range": {
                  "word_count": {
                      "gt": 5000,
                      "lte": 8000
                  }
              }
          }
      }
      
      时间范围 2019-01-01 <= publish_date <= 2019-08-01
      {
          "query": {
              "range": {
                  "publish_date": {
                      "gte": "2019-01-01",
                      "lte": "2019-08-01"
                  }
              }
          }
      }
      
      时间范围 2019-01-01 <= publish_date <= now
      {
          "query": {
              "range": {
                  "publish_date": {
                      "gte": "2019-01-01",
                      "lte": "now"
                  }
              }
          }
      }
      
    • Filter context

      ElasticSearch Filter context1.png
       {
          "query": {
              "bool": {
                  "filter": {
                      "term": {
                          "word_count": 5700
                      }
                  }
              }
          }
      }
      
  • 复合条件查询 以一定的逻辑组合子条件查询

    • 固定分数查询
      {
          "query": {
              "constant_score": {
                  "filter": {
                      "match": {
                          "title": "ElasticSearch"
                      }
                  }
              }
          }
      }
      
      {
          "query": {
              "constant_score": {
                  "filter": {
                      "match": {
                          "title": "ElasticSearch"
                      }
                  },
                  "boost": 2
              }
          }
      }
      
    • 布尔查询
      {
          "query": {
              "bool": {
                  "should": [
                      {
                          "match": {
                              "title": "ElasticSearch"
                          }
                      },
                      {
                          "match": {
                              "author": "张三"
                          }
                      }
                  ]
              }
          }
      }
      
      {
          "query": {
              "bool": {
                  "must": [
                      {
                          "match": {
                              "title": "ElasticSearch"
                          }
                      },
                      {
                          "match": {
                              "author": "张三"
                          }
                      }
                  ]
              }
          }
      }
      
      {
          "query": {
              "bool": {
                  "must": [
                      {
                          "match": {
                              "title": "ElasticSearch"
                          }
                      },
                      {
                          "match": {
                              "author": "赵六"
                          }
                      }
                  ],
                  "filter": [
                      {
                          "term": {
                              "word_count": 6000
                          }
                      }
                  ]
              }
          }
      }
      
      {
          "query": {
              "bool": {
                  "must_not": {
                      "term": {
                          "author": "张三"
                      }
                  }
              }
          }
      }
      
    • ...more
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,922评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,591评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,546评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,467评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,553评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,580评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,588评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,334评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,780评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,092评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,270评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,925评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,573评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,194评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,437评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,154评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352

推荐阅读更多精彩内容