个人学习ES之路-从安装入门到项目之实战window环境入门学习

大体分三个阶段:1.了解阶段 2.安装配置单例及集群阶段 3.实战学习阶段 4.总结阶段

一、了解阶段:

听说是目前最牛逼的搜索插件

二、安装阶段:

1.下载ES(6.4.2)

ES官网:https://www.elastic.co/cn/
方便下载:链接:https://pan.baidu.com/s/18GpfnqR77_aTFVkiYnHyMg 提取码:76yt

2.解压缩后进入bin目录,双击elasticsearch.bat

看到下入红色框,则是单例启动成功,进入 localhost:9200 可以看到返回的json串

esxi孤立的 esxi all in one 教程_esxi孤立的

3.插件安装Head安装

github上搜索elasticsearch-head 下载,解压缩后,用cmd界面,进入此目录,执行npm install(不支持npm请百度一下)

此时在elasticsearch-head下输入npm run start, 发现localhost:9100 后台界面,然后关闭命令。(相当于关闭head程序)

4.配置elasticsearch6-4-2/conf/elasticsearch.yml配置文件

#master的conf配置
http.cors.enabled: true
http.cors.allow-origin: “*”

cluster.name: zq
node.name: master
node.master: true

network.host: 127.0.0.1

【到这一步后,再次运行 elasticsearch.bat 程序 和 head目录下 npm run start ,进入9100界面 能看到master已运行】

5.配置集群:

新建两个文件夹 slave1和slave2 ,把最早下载的ES压缩包分别解压缩到这两个文件夹,然后分别修改各自的conf文件(如下), 然后 分别启动各自es程序, 刷新9100界面可以发现 集群创建完成

#slave1的conf配置:

cluster.name: name
node.name: slave1

network.host: 127.0.0.1
http.port: 8200

discovery.zen.ping.unicast.hosts: [“127.0.0.1”]

#slave2的conf配置:

cluster.name: name
node.name: slave1

network.host: 127.0.0.1
http.port: 8000

discovery.zen.ping.unicast.hosts: [“127.0.0.1”]

6.基本知识:

索引、类型、文档id (数据库、table、一行记录)

7.开始简单操作

用postman,put方式创建索引时候出现这个错误

"Rejecting mapping update to [people] as the final mapping would have more than 1 type: [woman, man]"

原因,es6.0版本后 不支持一次性插入多个类型

(1)创建索引:可以走head界面手动创建,或者走postman发起put请求创建:地址127.0.0.1:9200/people
{
	"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"
				}
			}
		}
	}
}
(2)数据插入

指定id插入:put请求、 postman地址:127.0.0.1:9200/people/man/1 (索引/类型/id 必须给id)

{

	"name": "zq",
	"country": "China",
	"age": " 22",
	"date": "1997-07-10"

}

自定id插入:post请求、 postman地址:127.0.0.1:9200/people/man/ (索引/类型/ 可以不指定id)

{

	"name": "zqnb",
	"country": "China",
	"age": "18",
	"date": "2019-07-10"

}

效果图:

esxi孤立的 esxi all in one 教程_esxi孤立的_02

(3)数据修改

post请求 :postman 请求地址为: 127.0.0.1:9200/people/man/id/ _update

{
	"doc": {
		"name": "zq666"
	}
}

脚本修改方式: 127.0.0.1:9200/people/man/id/ _update

{
	"script": {
		"lang": "painless",
		"inline": "ctx._source.age += params.age",
		"params": {
			"age": 100
		}
	}
}
(4)删除

删除数据:delete 请求 127.0.0.1:9200/people/man/1/

删除索引: head界面直接操作 或者 127.0.0.1:9200/people

(5)查询

简单查询: get请求 127.0.0.1:9200/people/man/id

条件查询:post请求 127.0.0.1:9200/people/man/id/ _search 【match 匹配】

{
	"query": {
		"match_all": {}
	},
    "from": 1,
    "size": 1
}
{
	"query": {
		"match": {
            "title": {XXX}
        }
	}
}

需要排序的 字段

{
	"query": {
		"match": {
            "title": {XXX}
        }
	},
    "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_coun"
           }
       }
    }   
}

模糊查询:(match 包含一部分就可以 match_phrase包含整个 multi_match 多个条件模糊查询)

{
	"query": {
       	"关键字": {
            "author": "XX"
       }
    }   
}

语法查询:包含: “query”: “XX and XX” 包含多个: “query”: “(XX and XX) or XXXX”

包含多个字段:

{
	"query": {
       	"query_string": {
            "query": "XX and XX"
       }
    }   
}

包含多个字段:

{
	"query": {
       	"query_string": {
            "query": "XX or XX"
            "fields": ["title, "author"]
       }
    }   
}

具体化查询:

{
	"query": {
       	"term": {
          “XX”: “XX”
       }
    }   
}

范围查询: gt lt 大于小于支持 数字 时间 类型、 now关键词代表 今天

{
	"query": {
       	"range": {
          “word_count”: {
            “gte": 100,
            "lte": 200
        }
       }
    }   
}

子条件查询【过滤查询】:filter context

{
	"query": {
       	"bool": {
           “filter": {
           		 “term": {
            		"word_count": 100
        		}
        	}
       }
    }   
}

符合条件查询: 固定分数查询:

esxi孤立的 esxi all in one 教程_esxi孤立的_03