Elasticsearch基本查询
准备数据
# 添加映射  
PUT lagou
{
  "mappings": {
    "job":{
      "properties": {
        "title":{
          "store": true,
          "type": "text",
          "analyzer": "ik_max_word"
        },
        "company_name":{
          "store": true,
          "type": "keyword"
        },
        "desc":{
          "type": "text"
        },
        "comments":{
          "type": "integer"
        },
        "add_time":{
          "type": "date",
          "format": "yyyy-MM-dd"
        }
      }
    }
  }
}
POST lagou/job/
{
    "title":"python django 开发工程师",
    "company_name":"美团科技有限公司",
    "desc":"对django的概念熟悉,熟悉python基础知识",
    "comments":20,
    "add_time":"2019-5-30"
}
POST lagou/job/
{
    "title":"python scrapy redis分布式爬虫基本",
    "company_name":"百度科技有限公司",
    "desc":"scrapy的概念熟悉,熟悉redis基础知识",
    "comments":5,
    "add_time":"2019-5-1"
}
POST lagou/job/
{
    "title":"elasticsearch打造搜索引擎",
    "company_name":"阿里巴巴科技有限公司",
    "desc":"熟悉数据结构算法,熟悉python基础开发",
    "comments":60,
    "add_time":"2019-4-15"
}
POST lagou/job/
{
    "title":"python打造推荐引擎系统",
    "company_name":"阿里巴巴科技有限公司",
    "desc":"熟悉推荐引擎的原理以及算法,掌握C语言",
    "comments":60,
    "add_time":"2019-1-22"
}
查询
基本查询
- match(会对输入进行分词)
GET lagou/_search
{
  "query": {
    "match": {
      "title": "爬取"
    }
  }
}
GET lagou/_search
{
  "query": {
    "match": {
      "title": "爬取"
    }
  }
}
- term(不会分词)
GET lagou/_search
{
  "query": {
    "term": {
      "title": "python爬虫"
    }
  }
}
- terms(满足任何一个)
# terms查询
GET lagou/_search
{
  "query": {
    "terms": {
      "title": ["工程师", "django", "系统"]
    }
  }
}
- query查询(控制查询的返回数量)
GET lagou/_search
{
  "query": {
    "match": {
      "title": "python"
    }
  },
  "from":1,
  "size":2
}
- match_all查询
GET lagou/_search
{
  "query": {
    "match_all": {}
  }
}
- multi_match查询
# 比如可以指定多个字段
# 比如查询title和desc这两个字段里面包含python的关键词文档
# 可以设置权重
GET lagou/_search
{
  "query": {
    "multi_match": {
      "query": "python",
      "fields": ["title^3", "desc"]
    }
  }
}
- stored_fields指定返回的字段(mappings设置了store的)
GET lagou/_search
{
  "stored_fields": ["title"],
  "query": {
    "match": {
      "title": "python"
    }
  }
}
- sort(排序返回 asc,desc)
GET lagou/_search
{
  "query": {
    "match_all": {}
  },
  "sort": [
    {
      "comments": {
        "order": "desc"
      }
    }
  ]
}
- range(范围查询)
 boost: 权重
GET lagou/_search
{
  "query": {
    "range": {
      "comments": {
        "gte": 10,
        "lte": 20,
        "boost": 2.0
      }
    }
  }
}
GET lagou/_search
{
  "query": {
    "range": {
      "add_time": {
        "gt": "2019-4-1"
      }
    }
  }
}
- match_phrase(短语查询,自动分词,满足所有则返回)
 slop: 两个词之前的距离
GET lagou/_search
{
  "query": {
    "match_phrase": {
      "title": {
        "query": "python系统",
        "slop": 6
      }
    }
  }
}
Elasticsearch基本查询