我做了一个导航站(域名是挂路灯的全拼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" #全部字段查询}}
}