elasticsearch基本查询

准备数据

PUT /lib3
{
  "settings": {
    "number_of_shards": 5,
    "number_of_replicas": 0
  },
  "mappings": {
    "user":{
      "properties": {
        "name":{"type":"text"},
        "address":{"type":"text"},
        "age":{"type":"integer"},
        "interests":{"type":"text"},
        "birthday":{"type":"date"}
      }
    }
  }
}
GET lib3
PUT /lib3/user/1
{
  "name":"zhaoliu",
  "address":"hei long jiang sheng tie ling shi",
  "age":50,
  "interests":"xi huan he jiu,duanlian,lvyou",
  "birthday":"1970-12-12"
}
PUT /lib3/user/2
{
  "name":"zhaoming",
  "address":"bei jing hai dian qu qing he zhen",
  "age":20,
  "interests":"xi huan he jiu chang ge",
  "birthday":"1998-10-12"
}
PUT /lib3/user/3
{
  "name":"lisi",
  "address":"bei jing hai dian qu qing he zhen",
  "age":23,
  "interests":"",
  "birthday":"1998-10-12"
}
PUT /lib3/user/4
{
  "name":"wangwu",
  "address":"bei jing hai dian qu qing he zhen ",
  "age":26,
  "interests":"xi huan biancheng,tingyinyue,lvyou",
  "birthday":"1995-10-12"
}
PUT /lib3/user/5
{
  "name":"zhangsan",
  "address":"bei jing chao yang qu",
  "age":29,
  "interests":"xi huan tingyinyue,changge,tiaowu",
  "birthday":"1988-10-12"
}

一、简单的查询

GET /lib3/user/_search?q=name:lisi

GET /lib3/user/_search?q=interests:changge&sort=age

二、term查询和terms查询(精确查找)

term query会去倒排索引中查找确切的term,它并不知道分词器的存在,这种查询适合keyword、numeric、date。

term:查询某个字段里含有某个关键词的文档

GET /lib3/user/_search/
{
  "query": {
    "term": {
        "name": "zhaoliu"
    }
  }
}

terms:查询某个字段里含有多个关键词文档

GET /lib3/user/_search
{
  "from": 0,
  "size": 2,
  "version": true,
  "query": {
    "terms": {
      "interests": ["hejiu","changge"]
    
  }
}
}

三、match查询(非精确查找)

match query知道分词器的存在,会对filed进行分词操作,然后再查询

GET /lib3/user/_search
{
  "query": {
    "match": {
      "name": "zhaoliu"
    }
  }
}

GET /lib3/user/_search
{
  "query": {
    "match": {
      "name": "zhaoliu zhaoming"
    }
  }
}

match_all查询所有的文档

GET /lib3/user/_search
{
  "query": {
    "match_all": {}
  }
}

multi_match:可以指定多个字段

GET /lib3/user/_search
{
  "query": {
    "multi_match": {
      "query": "changge",
      "fields": ["interests","name"]
    }
  }
}

match_phrase:短语匹配查询

GET /lib3/user/_search
{
  "query": {
    "match_phrase": {
      "interests": "duanlian,changge"
    }
  }


字段控制_source

GET /lib3/user/_search
{
  "_source": ["address","name"],
  "query": {
    "match": {
      "name": "zhaoliu zhaoming"
    }
  }
}

字段控制include,excludes

GET /lib3/user/_search
{
  "query": {
    "match_all": {}
  },
  "_source": {
    "includes": ["name","address"],   // "includes": ["na*","addr*"], 
    "excludes": ["age","birthday"]
  }
 
}

排序

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

前缀匹配

  GET /lib3/user/_search
  {
    "query": {
      "match_phrase_prefix": {
        "name": "zhao"
      }
    }
  }

范围查询

  GET /lib3/user/_search
  {
    "query": {
      "range": {
        "birthday": {
          "from": "1990-10-10",
          "to": "2016-05-01"
        }
      }
    }
  }

wildcard查询

允许使用通配符*和?进行查询,*代表0个或多个 ?代表任意一个字符

 GET /lib3/user/_search
  {
    "query": {
      "wildcard": {
        "name": "zhao*"
        
      }
    }
  }

fuzzy模糊查询

  GET /lib3/user/_search
  {
    "query": {
      "fuzzy": {
        "name": "zholiu"
      }
    }
  }

高亮搜索

  GET /lib3/user/_search
  {
    "query": {
      "match": {
        "interests": "changge"
      }
    },
    "highlight": {
      "fields": {"interests": {}}
    }
  }

你可能感兴趣的:(elasticsearch)