工作日记2017.07.05 简单操作es

来源:互联网 发布:俄罗斯杜马选举知乎 编辑:程序博客网 时间:2024/05/17 07:28

官网:https://www.elastic.co/cn/
一、

简单的CRUD操作

1、添加

PUT /index/type/id{  "json数据"}

2、查询

GET /index/type/id

3、修改

POST /index/type/id/_update{  "doc": {    "FIELD": "值"  }}

4、删除
DELETE /index/type/id

二、搜索

搜索可以分成六大类

1、query string search
2、query DSL
3、query filter
4、full-text search
5、phrase search
6、highlight search

1)query string search

搜索全部:GET supplier/user/_search

{  "took": 2,  "timed_out": false,  "_shards": {    "total": 5,    "successful": 5,    "failed": 0  },  "hits": {    "total": 3,    "max_score": 1,    "hits": [      {        "_index": "supplier",        "_type": "user",        "_id": "2",        "_score": 1,        "_source": {          "name": "lisi",          "age": 26,          "address": "bei jing tong zhou",          "price": 10000,          "dept": [            "kaifabu"          ]        }      },      {        "_index": "supplier",        "_type": "user",        "_id": "1",        "_score": 1,        "_source": {          "name": "zhangsan",          "age": 30,          "address": "bei jing chang chun jie",          "price": 15000,          "dept": [            "kaifabu",            "yanfabu"          ]        }      },      {        "_index": "supplier",        "_type": "user",        "_id": "3",        "_score": 1,        "_source": {          "name": "wangwu",          "age": 26,          "address": "bei jing tong zhou yun he ming zhu",          "price": 13000,          "dept": [            "kaifabu"          ]        }      }    ]  }}

took:耗费了几毫秒

timed_out:是否超时,这里是没有

_shards:数据拆成了5个分片,所以对于搜索请求,会打到所有的primary shard(或者是它的某个replica shard也可以)

hits.total:查询结果的数量,3个document

hits.max_score:score的含义,就是document对于一个search的相关度的匹配分数,越相关,就越匹配,分数也高

hits.hits:包含了匹配搜索的document的详细数据

2、query DSL
查询所有

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

查询全部并且排序

GET suppluer/user/_search{  "query": {    "match_all": {}  }  , "sort": [    {      "price": {        "order": "desc"      }    }  ]}

分页查询

GET supplier/user/_search{  "query": { "match_all": {} },  "from": 1,  "size": 1}

指定要查询显示的field

GET supplier/user/_search{  "query": { "match_all": {} },  "_source": ["name", "price"]}

3、query filter

搜索name为‘lisi’并且price大于1500的

GET supplier/user/_search{    "query" : {        "bool" : {            "must" : {                "match" : {                    "name" : "lisi"                 }            },            "filter" : {                "range" : {                    "price" : { "gt" : 1500}                 }            }        }    }}

4、full-text search(全文检索)

address这个字段,会先被拆解,建立倒排索引

GET /ecommerce/product/_search{    "query" : {        "match" : {            "address" : "bei jing"        }    }}

5、phrase search(短语搜索)

跟全文检索相对应,相反,全文检索会将输入的搜索串拆解开来,去倒排索引里面去一一匹配,只要能匹配上任意一个拆解后的单词,就可以作为结果返回
phrase search,要求输入的搜索串,必须在指定的字段文本中,完全包含一模一样的,才可以算匹配,才能作为结果返回

GET /ecommerce/product/_search{    "query" : {        "match_phrase" : {            "address" : "bei jing"        }    }}

6、highlight search(高亮搜索结果)

GET /ecommerce/product/_search{    "query" : {        "match" : {            "address" : "bei jing"        }    },    "highlight": {        "fields" : {            "address" : {}        }    }}
原创粉丝点击