快速入门ElasticSearch(下)( 三 )


现在尝试将外层的filter去掉 , 并将自定义的boost也去掉 , 此时JSON格式的信息变为:
{"query": {"constant_score": {"match": {"title": "入门"}}}}此时查询结果如下所示 , 可以看到固定分数查询是不支持match匹配的 , 仅支持filter匹配 。
快速入门ElasticSearch(下)文章插图
布尔查询在前面我们已经使用过布尔查询 , 布尔查询使用的关键字是bool , 同样使用POST方法 , 但是对应的接口API为 , 注意里面是不写索引的 , 此时相对应的JSON格式信息为:
{"query": {"bool": {"should": [{"match": {"author": "张三"}},{"match": {"title": "Java"}}]}}}可以看到这里我们使用了bool关键字 , 且在里面又使用了should这一条件 , 表示应当 , 上面例子的意思是查询作者为张三或者标题中包含Java的文档记录 , 查询结果肯定有三条:
快速入门ElasticSearch(下)文章插图
接下来将上面的should条件修改为must , 其余保持不变则就将或的关系变成与的关系 , 此时查询结果肯定为空 , 因为不存在作者为张三且标题中包含Java的文档记录:
快速入门ElasticSearch(下)文章插图
快速入门ElasticSearch(下)文章插图
再来看一个例子 , 查询单词数为8000且标题中包含Java的文档记录 , 此时的JSON信息为:
{"query": {"bool": {"must": [{"match": {"title": "Java"}}],"filter": [{"term": {"word_count": 8000}}]}}}通过分析可以知道查询结果只有一条 , 如下所示:
快速入门ElasticSearch(下)文章插图
与和或都介绍完了 , 现在来学习非 , 非就是must_not , 也就是一定不能满足的条件 。 举个例子 , 查询不是余思的书 , 此时对应的JOSN格式信息为:
{"query": {"bool": {"must_not": {"term": {"author": "余思"}}}}}显然一共有12条记录 , 其中只有一条记录的作者是余思 , 因此作者不是余思的记录肯定的有11条 。
那这样关于ElasticSearch的快速入门就先学习到这 , 后续将正式进入Elastic Stack的学习 。
快速入门ElasticSearch(下)文章插图


推荐阅读