博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ElasticSearch学习(8)-Restful接口查询操作
阅读量:5886 次
发布时间:2019-06-19

本文共 3887 字,大约阅读时间需要 12 分钟。

hot3.png

创建索引

建立映射关系

请求方式:post

{"properties":{"title":{"type":"keyword"},"publishDate":{"type":"date"},"director":{"type":"keyword"},"price":{"type":"float"},"desc":{"type":"text"}}}

1.查询指定索引指定类型下所有数据

http://192.168.15.38:9200/[索引名]/[类型]/_search/

例如:

http://192.168.15.38:9200/film/dongzuo/_search/查询film索引下类型为dongzuo的所有数据

2.分页查询

http://192.168.15.38:9200/[索引名]/[类型]/_search/

请求方式:POST

参数:

{  "from": [起始位置],  "size": [每页数量]}

例如:

查询前两条数据http://192.168.15.38:9200/film/dongzuo/_search/{  "from": 0,  "size": 2}

3.排序查询

http://192.168.15.38:9200/[索引名]/[类型]/_search/

请求方式:POST

参数:

{  "sort": [    {      "[排序字段]": {        "order": "[排序类型]" //desc降序 asc升序      }    }  ]}

例如:

按照发布日期降序http://192.168.15.38:9200/film/dongzuo/_search/{  "sort": [    {      "publishDate": {        "order": "desc"      }    }  ]}

4.数据列的过滤

http://192.168.15.38:9200/[索引名]/[类型]/_search/

请求方式:POST

参数:

{  "_source": {    "include": [      [查询包括的列]    ]  }}

例如:

查询前三行数据,只查询标题、导演和价格{  "from": 0,  "size": 3,  "_source": {    "include": [      "title",      "director",      "price"    ]  }}

5.简单条件查询

请求方式:POST

http://192.168.15.38:9200/[索引名]/[类型]/_search/
参数:{  "query": {    "match": {      "[配置的字段]": "[匹配的值]"    }  }}

例如

匹配地址带有山东的数据

注意问题:假如匹配"山"是匹配不到的,因为默认分词器把“山东”分为一个词,而不是"山"

http://192.168.15.38:9200/film/dongzuo/_search/{  "query": {    "match": {      "address": "山东"    }  }}

6.查询结果高亮显示 请求方式:POST

http://192.168.15.38:9200/[索引名]/[类型]/_search/
参数:{ "highlight": {    "fields": {      "[高亮显示的字段]": {}    }  }}

例如:

标题title高亮显示

注:高亮显示的只能是在查询中的字段

http://192.168.15.38:9200/film/dongzuo/_search/{  "query": {    "match": {      "title": "战狼2"    }  },  "highlight": {    "fields": {      "title": {}    }  }}

7.多条件组合查询

首先了解bool过滤器: 主要有三部分:

{   "bool" : {      "must" :     [],      "should" :   [],      "must_not" : [],   }}

must:所有语句必须匹配 和and等价

must_not:所有语句必须不能匹配 和not等价

should:至少一个匹配 和or等价

(1)单个条件模糊匹配

{  "query": {    "bool": {      "must": {        "match": {          "name": "李四"        }      }    }  },  "_source": {    "include": [      "name",      "age",      "address"    ]  },  "highlight": {    "fields": {      "name": {}    }  }}

(2)多个条件匹配

{  "query": {    "bool": {      "must": [        {          "match": {            "name": "李四"          }        },        {          "match": {            "address": "山东"          }        }      ]    }  },  "_source": {    "include": [      "name",      "age",      "address"    ]  },  "highlight": {    "fields": {      "name": {}    }  }}

(3)must与must_not组合使用

查询地址含有山东,姓名不含有张三的用户{  "query": {    "bool": {      "must": [        {          "match": {            "address": "山东"          }        }      ],      "must_not": {        "match": {          "name": "张三"        }      }    }  },  "_source": {    "include": [      "name",      "age",      "address"    ]  },  "highlight": {    "fields": {      "name": {}    }  }}

(4)使用should查询

should查询相当于sql里面的or条件,在ES里面还有个功能就是提高_score参数,是的匹配更精确

{  "query": {    "bool": {      "must": [        {          "match": {            "address": "山东"          }        }      ],      "should": [        {          "match": {            "name": "张三"          }        },        {          "range": {            "age": {              "gte": 21            }          }        }      ]    }  },  "_source": {    "include": [      "name",      "age",      "address"    ]  },  "highlight": {    "fields": {      "name": {}    }  }}

(5)filter过滤 fileter作用是过滤符合条件的查询

例如:过滤掉年龄小于21的用户

gt: 大于gte:大于等于lt:小于lte:小于等于
{  "query": {    "bool": {      "must": [        {          "match": {            "address": "山东"          }        }      ],      "filter": {        "range": {          "age": {            "gte": 21          }        }      }    }  },  "_source": {    "include": [      "name",      "age",      "address"    ]  },  "highlight": {    "fields": {      "name": {}    }  }}

转载于:https://my.oschina.net/u/2477500/blog/1615904

你可能感兴趣的文章
使用Sqoop从mysql向hdfs或者hive导入数据时出现的一些错误
查看>>
控制子窗口的高度
查看>>
处理 Oracle SQL in 超过1000 的解决方案
查看>>
Alpha线性混合实现半透明效果
查看>>
chkconfig 系统服务管理
查看>>
ORACLE---Unit04: SQL(高级查询)
查看>>
贪食蛇
查看>>
201521123009 《Java程序设计》第11周学习总结
查看>>
Python3之多线程学习
查看>>
MVC和MTV结构分析
查看>>
(转)微信网页扫码登录的实现
查看>>
mariadb启动报错:[ERROR] Can't start server : Bind on unix socket: Permission denied
查看>>
nginx的信号量
查看>>
云im php,网易云IM
查看>>
河南农业大学c语言平时作业答案,河南农业大学2004-2005学年第二学期《C语言程序设计》期末考试试卷(2份,有答案)...
查看>>
c语言打开alist文件,C语言 文件的打开与关闭详解及示例代码
查看>>
c语言 中的共用体和结构体如何联合定义,结构体(Struct)、联合体(Union)和位域
查看>>
SDL如何嵌入到QT中?!
查看>>
P1026 统计单词个数
查看>>
[js高手之路] html5 canvas系列教程 - 状态详解(save与restore)
查看>>