Elasticsearch(五)信息检索

信息检索

Elasticsearch: 6.4.2

1. 简单检索

由于自Elasticsearch6开始不再支持一个索引下存在多个类型的操作,因此也就没有了查询同一索引下多个类型的信息操作。

from、size分别指定了从哪个结果开始返回、查询的结果集包含的最大文档数(默认是10)

  • 查询指定索引指定类型下的信息

    GET /users/user/_search?q=name:bourne
    
  • 查询多个或者所有索引,指定类型或多个类型下的信息

    GET /users,test/user/_search?q=name:bourne
    GET /users,test/user, example/_search?q=name:bourne
    GET /*/user/_search?q=name:bourne
    
  • 查询所有索引所有类型下的信息

    GET /_search?q=name:bourne
    
2. 基本检索
  • 设置不同字段的排序权重

    会影响文档的相关性得分,从而影响排序结果。

    GET /users/user/_search
    {
      "query": {
        "multi_match": {
          "query": "bourne",
          "fields": ["name^2", "message"]
        }
      }
    }
    
  • 指定返回的字段子集

    GET /users/user/_search
    {
      "query": {
        "match_all": {}
      },
      "_source": ["name", "message"]
    }
    
  • term查询、terms查询、wildcard查询

    term查询: 仅匹配在给定字段有某个此项的文档,查询中的词项不再被解析属于精确查询;另外可以增加boost属性提升改term查询的重要性.

    *wildcard查询: 允许在要查询的内容中使用通配符()`

    # term查询
    GET /users/user/_search
    {
      "query": {
        "term": {
          "name": {
            "value": "bourne"
          }
        }
      }
    }
    # terms查询
    GET /users/user/_search
    {
      "query": {
        "terms": {
          "name": [
            "anna",
            "bourne"
          ]
        }
      }
    }
    # wildcard查询
    GET /users/user/_search
    {
      "query": {
        "wildcard": {
          "name": {
            "value": "b*"
          }
        }
      }
    }
    
  • match查询、match_all查询、match_phrase查询

    match_phrase查询: 短语查询,可以通过指定slop参数定义在查询文本的词项之间应间隔多少个未知单词才视为成功,slop默认为0.

    # match查询
    GET /users/user/_search
    {
      "query": {
        "match": {
          "name": "bourne"
        }
      },
      "sort": [
        {
          "created_at": {
            "order": "desc"
          }
        }
      ],
      "size": 20
    }
    # match_all查询
    GET /users/user/_search
    {
      "query": {
        "match_all":{}
      },
      "sort": [
        {
          "created_at": {
            "order": "desc"
          }
        }
      ],
      "size": 20
    }
    # match_phrase:对于查询文本the wife of Bourne;
    # 如果slop不大于0,那么不会匹配成功.
    GET /users/user/_search
    {
      "query": {
        "match_phrase": {
          "message": {
            "query": "wife bourne",
            "slop": 1
          }
        }
      }
    }
    
  • Prefix 、Range查询

    prefix查询:查找某个字段以给定前缀开头的文档,支持boost属性影响排序结果

    # prefix查询
    GET /users/user/_search
    {
      "query": {
        "prefix": {
          "name": {
            "value": "j"
          }
        }
      }
    }
    # range查询:10天前至当前时间的文档
    GET /users/user/_search
    {
      "query": {
        "range": {
          "created_at": {
            "gte": "now-10d",
            "lte": "now"
          }
        }
      }
    }
    
  • 跨字段查询multi_match

    GET /users/user/_search
    {
      "query": {
        "multi_match": {
          "query": "baby user",
          "fields": ["name", "message"]
        }
      }
    }
    
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值