我做了一个导航站(域名是挂路灯的全拼gualudeng.com),里面精选了各种影视,动漫,黑科技,实用工具,搞笑有趣的站点,动动大家可爱的小手,点进来看看吧,良心站点。
1.安装ES可能出现的问题
max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
直接在docker宿主机上执行(不是容器)然后重启容器
sudo sysctl -w vm.max_map_count=655360
2.常用命令
GET /users/_search #获取users索引的全部数据
PUT /users/_doc/1
{
"name":"fang"
"age":18
} #新增一条数据,如果数据存在则更新文档,并修改版本号。
DELETE /users/_doc/1
通过在更新请求中传递版本号可以实现乐观锁mvcc(更新后面要加_update)
GET /users/_doc/_mget
{
"ids":[1,2]
}
GET /users/_search?from=1&size=1
GET /users/_mapping #查看字段映射
PUT /fang
{
"mappings": {
"properties": {
"name":{
"type":"text"
},
"age":{
"type":"long"
}
}
}
}
GET _cat/indices?v
{
"multi_match": {
"query": "full text search",
"fields": [ "title", "body" ]
}
}
{ "terms": { "tag": [ "search", "full_text", "nosql" ] }}
{
"bool": {
"must": { "match": { "tweet": "elasticsearch" }},
"must_not": { "match": { "name": "mary" }},
"should": { "match": { "tweet": "full text" }},
"filter": { "range": { "age" : { "gt" : 30 }} }
}
}
3.elasticsearch 数据类型详解
1.text
可以被全文索引,并且会被分词。
2.keyword
可以被全文索引,不会被分词精确搜索。用于等值,排序搜索。
3.整数类型
byte -128~127 ,short -32768~32767, integer -2^31~2^31-1, long
4.浮点类型
float double
5.日期类型
date 可以存格式化的字符串,也可存整形时间戳
4.mapping配置
"analyzer": "ik"
ik_max_word:ik 中文分词插件提供,对文本进行最大数量分词
laravel天下无敌 -> laravel,天下无敌 , 天下 , 无敌
ik_smart: ik 中文分词插件提供,对文本进行最小数量分词
laravel天下无敌 -> laravel,天下无敌
5.match multi_match query_string term区别
{
"query":{
"match":{
"name":"fang"
}
}
}
{
"query":{
"multi_match": {
"query": "Quick brown fox",
"type": "best_fields",
"fields": [ "title", "body" ],
"tie_breaker": 0.3,
"minimum_should_match": "30%"
}
}
}
{
"query":{
"query_string":{
"query":"fang" #全部字段查询
}
}
}