ES文档搜索的请求路径为/索引/_search
创建索引
PUT /students
{
"mappings": {
"properties": {
"id":{
"type": "integer",
"index": true
},
"name":{
"type": "text",
"index": true,
"store": true,
"analyzer": "ik_smart"
},
"info":{
"type": "text",
"store": true,
"analyzer": "ik_smart"
}
}
}
}
向该索引推送数据
POST /students/_doc
{
"id":1,
"name":"程序员",
"info":"i love code"
}
POST /students/_doc
{
"id":2,
"name":"迪迦奥特曼",
"info":"你想成为光"
}
POST /students/_doc
{
"id":3,
"name":"小黑子",
"info":"你想成为小黑子"
}
查询索引
#match查询:全文检索。将查询条件分词后再进行搜索。
GET /students/_search
{
"query": {
"match": {
"id": "3"
}
}
}
#查询所有
GET /students/_search
{
"query": {
"match_all": {}
}
}
模糊查询(fuzziness最大为2)
GET /students/_search
{
"query": {
"match": {
"info": {
"query": "lov",
"fuzziness": 1
}
}
}
}
范围查询
range
:范围搜索。对数字类型的字段进行范围搜索
gt
/
lt
:
大于
/
小于
短语检索短语检索
gte
/
lte
:
大于等于
/
小于等于
#范围搜索
GET /students/_search
{
"query": {
"range": {
"id": {
"gte": 1,
"lte": 3
}
}
}
}
短语检索
match_phrase
:短语检索。搜索条件不做任何分词解析,在搜 索字段对应的倒排索引中精确匹配。
GET /students/_search
{
"query": {
"match_phrase": {
"info": "喜欢"
}
}
}
单词/词组搜索
term/terms
:单词
/
词组搜索。搜索条件不做任何分词解析,在 搜索字段对应的倒排索引中精确匹配。
GET /students/_search
{
"query": {
"terms": {
"info": ["你","黑子"]
}
}
}
多条件联查
#复合搜索 查询id从1到3之间info中是否包含小黑子
GET /students/_search
{
"query": {
"bool": {
"must": [
{
"term": {
"info": "小黑子"
}
},
{
"range": {
"id": {
"gte": 1,
"lte": 3
}
}
}
]
}
}
}