搜索
(1)相关性得分
Elasticsearch 默认按照相关性得分排序,即每个文档跟查询的匹配程度。也就是说你搜索”rock climbing”的话,只有”rock”的也可能被搜出来,只是相关性得分会很低,会排在后面点。例子:
GET /megacorp/employee/_search { "query" : { "match" : { "about" : "rock climbing" } } }
返回结果有两条,第一条:”about”:”I love to go rock climbing“,第二条:”about”:”I like to collect rock albums“。
(2)短语搜索
找出一个属性中的独立单词是没有问题的,但有时候想要精确匹配一系列单词或者短语 。 比如, 我们想执行这样一个查询,仅匹配同时包含“rock” 和 “climbing” ,并且 二者以短语 “rock climbing” 的形式紧挨着的雇员记录。为此对 match 查询稍作调整,使用一个叫做 match_phrase 的查询:
GET /megacorp/employee/_search { "query" : { "match_phrase" : { "about" : "rock climbing" } } }
毫无悬念,返回结果仅有 John Smith 的文档。
(3)分析
Elasticsearch 有一个功能叫聚合(aggregations),允许我们基于数据生成一些精细的分析结果。聚合与 SQL 中的 GROUP BY 类似但更强大。这里有个复杂案例:ElasticSearch 嵌套分桶的过滤与排序
集群状态
集群黄色状态解读:

bootstrap checks failed 错误解决
(1)max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
解决办法:
第一步:切换到root用户,修改 /etc/security/limits.conf 添加如下内容:
* soft nofile 65536 * hard nofile 131072 * soft nproc 4096 * hard nproc 4096
第二步:切换到root用户,修改 /etc/security/limits.d/20-nproc.conf 添加如下内容:
* soft nproc 1024 #修改为 * soft nproc 4096
(2)max number of threads [1024] for user [admin] is too low, increase to at least [4096]
解决办法和上面(1)一样。
(3) max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
解决办法:
切换到root用户,修改 /etc/sysctl.conf ,添加:vm.max_map_count=655360,
并执行命令:sudo sysctl -p
。
注意:如果是 docker-compose 部署,改的是宿主主机。这个设置在安装前就应该先设置。
(4)system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk
解决办法:
修改 elasticsearch.yml,添加:
bootstrap.memory_lock: false bootstrap.system_call_filter: false