数据类型 | |
---|---|
字符串类型 | text、keyword |
数值类型 | long、integer、short、byte、double、float、half float、scaled float |
日期类型 | date |
布尔值类型 | boolean |
二进制类型 | binary |
curl -X
GET
、 POST
、 PUT
、 HEAD
或者 DELETE
。# 计算集群中文档的数量
curl -X GET 'http://localhost:9200/_count?pretty' -d '
{
"query": {
"match_all": {}
}
}
'
# Kibana中
GET /_count?pretty
{
"query": {
"match_all": {}
}
}
PUT\POST /索引名/类型名(新版本逐步废弃,默认类型_doc代替)/文档ID
{
请求体
}
往索引为 db(SQL数据库), 类型为 user(SQL Table) 的数据库中插入一条 id 为 1(SQL row?) 的一条数据(拥有 username/password/age 三个属性的实体)。
POST /db/user/1
{
"username": "wmyskxz1",
"password": "123456",
"age": "22"
}
PUT /test3/_doc/1
{
"name": "流柚",
"age": 18,
"birth": "1999-10-10"
}
PS:PUT如果漏了一些信息,原始信息就会丢失,故现在一般使用POST来更新索引。
PUT /test2
{
"mappings": {
"properties": {
"name": {
"type": "text"
},
"age":{
"type": "long"
},
"birthday":{
"type": "date"
}
}
}
}
GET test2
DELETE /db/user/1
PUT /db/user/1
{
"username": "wmyskxz3",
"password": "123456",
"age": "22"
}
POST /test3/_doc/1/_update
{
"doc":{
"name" : "post修改,version不会加一",
"age" : 2
}
}
GET /db/user/1
GET <index>/<type>/_search
GET /test3/_doc/_search?q=name:流柚
GET /blog/user/_search
{
"query":{
"match":{
"name":"流"
}
},
"_source": ["name","desc"],
"sort": [
{
"age": {
"order": "asc"
}
}
],
"from": 0,
"size": 1
}
GET /blog/user/_search
{
"query":{
"bool": {
"must": [
{
"match":{
"sex": "女"
}
},
{
"match": {
"name": "流"
}
}
],
"filter": {
"range": {
"age": {
"gte": 1,
"lte": 100
}
}
}
}
}
}
多关键字查(空格隔开) :match 会使用分词器解析(先分析文档,然后进行查询)
GET /blog/user/_search
{
"query":{
"match":{
"name":"流 水"
}
}
}
term 直接通过 倒排索引 指定词条查询
GET /blog/user/_search
{
"query":{
"term":{
"name":"流 水"
}
}
}
GET blog/user/_search
{
"query": {
"match": {
"name":"流"
}
},
"highlight": {
"fields": {
"name": {}
}
}
}
GET blog/user/_search
{
"query": {
"match": {
"name":"流"
}
},
"highlight": {
"pre_tags": ""
,
"post_tags": "",
"fields": {
"name": {}
}
}
}
ElasticSearch自己基于JSON的域特定语言,可以在其中表达查询和过滤器。
GET /_search
{
"query": {
//Query DSL here
"query_string": {
"query": "kill"
}
}
}
命令行请求:
curl -X GET 'http://localhost:9200/db/user/_search?q=kill&pretty'
或
curl -X GET 'http://localhost:9200/db/user/_search?pretty' -d '
{
"query" : {
"query_string": {
"query": "kill"
}
}
}
'
fields
fields:可用于指定要搜索的字段列表。如果不使用“fields”字段,ElasticSearch查询将默认自动生成的名为 “_all” 的特殊字段,来基于所有文档中的各个字段匹配搜索。
GET /_search
{
"query": {
"query_string": {
"query": "ford",
"fields": [
"title"
]
}
}
}
filtered
(废除)query
和 filter
。GET /_search
{
"query": {
"filtered": {
"query": {
"query_string": {
"query": "drama"
}
},
"filter": {
# //Filter to apply to the query
"term": {"year": 1962}
}
}
}
}
条件过滤器:term
GET /_search
{
"query": {
"filtered": {
"query": {
"match_all": {}
},
"filter": {
"term": {
"year": 1962
}
}
}
}
}
GET /_search
{
"query": {
"constant_score": {
"filter": {
"term": {
"year": 1962
}
}
}
}
}
Bool查询对应Lucene中的BooleanQuery,它由一个或者多个子句组成,每个子句都有特定的类型。
text:支持分词、全文检索,支持模糊、精确查询,不支持聚合、排序操作。最大支持的字符长度无限制,适合大字段存储。
keyword:不进行分词,直接索引,支持模糊、精确匹配,支持聚合、排序操作。keyword类型的最大支持的长度为32766个UTF-8类型的字符,可以通过设置ignore_above指定自持字符长度,超过给定长度后的数据将不被索引,无法通过term精确匹配检索返回结果。
GET _analyze
{
"analyzer": "keyword",
"text": ["测试liu"]
}// keyword不会分词,即 测试liu
GET _analyze
{
"analyzer": "standard",
"text": ["测试liu"]
}// 分为 测 试 liu
GET _analyze
{
"analyzer":"ik_max_word",
"text": ["测试liu"]
}// 分为 测试 liu
GET _cat/indices
GET _cat/aliases
GET _cat/allocation
GET _cat/count
GET _cat/fielddata
GET _cat/health
GET _cat/indices
GET _cat/master
GET _cat/nodeattrs
GET _cat/nodes
GET _cat/pending_tasks
GET _cat/plugins
GET _cat/recovery
GET _cat/repositories
GET _cat/segments
GET _cat/shards
GET _cat/snapshots
GET _cat/tasks
GET _cat/templates
GET _cat/thread_pool
GET _cluster/health
GET /_cat/nodes
、GET /_cat/nodes?v
(?v 让kibana 输出逻辑模式即verbose模式的首字母)