elasticsearch基本操作二

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013219624/article/details/84763304

1.数据准备

PUT data
{
  "settings":{
    "number_of_replicas":0,
    "number_of_shards":3
  }, 
  "mappings":{
    "user": {
      "properties": {
        "name":{"type":"text"},
        "address":{"type":"text"},
        "age":{"type":"integer"},
        "interests":{"type":"text"},
        "birthday":{"type":"date"}
      }
    }  
  }
}

PUT data/user/1
{
  "name":"jack",
  "address":"beijing",
  "age":23,
  "interests":"programing",
  "birthday":"2018-11-12"
}

PUT data/user/2
{
  "name":"tom",
  "address":"shanghai",
  "age":13,
  "interests":"programing fb bk",
  "birthday":"2018-03-15"
}

PUT data/user/3
{
  "name":"jack3",
  "address":"nanjing",
  "age":10,
  "interests":"fb lol",
  "birthday":"2018-08-25"
}

2.term(s)查询,适合keyword numeric date

GET data/user/_search
{
  "query": {
    "term": {
      "name": "jack3"
    }
  }
}

GET data/user/_search
{
  "query": {
    "terms": {
      "name": ["jack3","jack"]
    }
  }
}

注:其实就是查询条件不分词 直接走倒排索引查文档

3.match(multi_match)查询

GET data/user/_search 
{
  "query": {
    "match": {
      "name": "jack jack3"
    }
  }
}

GET data/user/_search
{
  "query": {
    "multi_match": {
      "query": "tom",
      "fields": ["name", "address"]
    }
  }
}

注:查询条件先分词 再走倒排索引查文档

4.短语查询,也是不分词查询

GET data/user/_search
{
  "query": {
    "match_phrase": {
      "interests": "fb bk"
    }
  }
}

GET data/user/_search
{
  "query": {
    "match_phrase_prefix": {
      "name": "jack"
    }
  }
}

*5.wildcard查询(代表0个多个词 ?代表任意一个词)

GET data/user/_search
{
  "query": {
    "wildcard": {
      "name": "jack?"
    }
  }
}

GET data/user/_search
{
  "query": {
    "wildcard": {
      "name": "jack*"
    }
  }
}

6.模糊查询

GET data/user/_search
{
  "query": {
    "fuzzy": {
      "name": "jagk"
    }
  }
}

注:这里有点特表要注意下

7.高亮显示查询

GET data/user/_search
{
  "query": {
    "match": {
      "name": "jack"
    }
  },
  "highlight": {
    "fields": {
      "name":{}
    }
  }
}

8.范围

# 日期
GET data/user/_search
{
  "query": {
    "range": {
      "birthday": {
        "from": "2018-03-15",
        "to": "2018-11-12"
      }
    }
  }
}

# 年龄
GET data/user/_search
{
  "query": {
    "range": {
      "age": {
        "from": 10,
        "to": 23,
        # 不包含 10
        "include_lower": false,
        # 不包含 23
        "include_upper": false
      }
    }
  }
}

9.排序(sort)

GET data/user/_search 
{
  "query": {
    "match_all": {}
  },
  "sort": [
    {
      "age": {
        "order": "asc"
      }
    }
  ]
}

10.分页查询

GET data/user/_search 
{
  "from": 0,
  "size": 2, 
  "version": true, 
  "query": {
    "match_all": {}
  },
  "sort": [
    {
      "age": {
        "order": "desc"
      }
    }
  ]
}

11.指定查询结果(_source)

GET data/user/_search
{
  "query": {
   "match_all": {}
  },
  "_source": ["name", "age"]
}

注:_source也可以用通配符

GET data/user/_search
{
  "query": {
    "match_all": {}
  },
  "_source": {
    "includes": ["name", "a*"],
    "excludes": ["age"]
  }
}

猜你喜欢

转载自blog.csdn.net/u013219624/article/details/84763304