更多干货
分布式实战 (干货)
spring cloud 实战 (干货)
mybatis 实战 (干货)
spring boot 实战 (干货)
React 入门实战 (干货)
构建中小型互联网企业架构 (干货)
python 学习持续更新
1_ElatisSearch 使用 term filter 来搜索数据
2_ElatisSearch filter 执行原理 bitset 机制与 caching 机制
4_ElatisSearch 使用 terms 搜索多个值
5_ElatisSearch 基于 range filter 来进行范围过滤
6_ElatisSearch 控制全文检索结果的精准度
7_ElatisSearch term+bool 实现的 multiword 搜索原理
日志管理 ELK
例子一
1 搜索发帖日期为 2017-01-01, 或者帖子 ID 为 XHDK-A-1293-#fJ3 的帖子, 同时要求帖子的发帖日期绝对不为 2017-01-02
以上需求类似 sql:
- select * from forum.article where(post_date = '2017-01-01'or article_id = 'XHDK-A-1293-#fJ3') and post_date != '2017-01-02'GET / forum / article / _search {
- "query": {
- "constant_score": {
- "filter": {
- "bool": {
- "should": [{
- "term": {
- "postDate": "2017-01-01"
- }
- },
- {
- "term": {
- "articleID": "XHDK-A-1293-#fJ3"
- }
- }],
- "must_not": {
- "term": {
- "postDate": "2017-01-02"
- }
- }
- }
- }
- }
- }
- }
must,should,must_not,filter: 必须匹配, 可以匹配其中任意一个即可, 必须不匹配
例子二
2 搜索帖子 ID 为 XHDK-A-1293-#fJ3, 或者是帖子 ID 为 JODL-X-1937-#pV7 而且发帖日期为 2017-01-01 的帖子
以上需求类似 sql:
- select *
- from forum.article
- where article_id='XHDK-A-1293-#fJ3'
- or (article_id='JODL-X-1937-#pV7' and post_date='2017-01-01')
- GET /forum/article/_search
- {
- "query": {
- "constant_score": {
- "filter": {
- "bool": {
- "should": [
- {
- "term": {
- "articleID": "XHDK-A-1293-#fJ3"
- }
- },
- {
- "bool": {
- "must": [
- {
- "term":{
- "articleID": "JODL-X-1937-#pV7"
- }
- },
- {
- "term": {
- "postDate": "2017-01-01"
- }
- }
- ]
- }
- }
- ]
- }
- }
- }
- }
- }
知识点
1bool:must,must_not,should, 组合多个过滤条件
2bool 可以嵌套
3 相当于 SQL 中的多个 and 条件: 当你把搜索语法学好了以后, 基本可以实现部分常用的 sql 语法对应的功能
来源: http://blog.csdn.net/qq_27384769/article/details/79631308