elasticsearch-查询
使用如下语句创建一个名字为:user_document,别名为user的索引
PUT:http://localhost:9200/user_document
{
"settings" : {
"number_of_shards" : 1,
"number_of_replicas" : 0
},
"mappings" : {
"user_1" : {
"properties" : {
"Identity" :
{
"type" : "string",
"index" : "not_analyzed"
},
"Name" :
{
"type" : "string"
},
"Age" :
{
"type" : "integer"
},
"Birthday" :
{
"format": "dateOptionalTime",
"type": "date"
},
"Sex" :
{
"type" : "boolean"
}
}
}
},
"aliases" : {
"user" : {}
}
}
并新增10条测试数据
1、Match All 查询
GET _search
{
"query":
{
"match_all": {}
}
}
匹配索引中的全部文档,默认得分为1.0
2、Match 查询
GET _search
{
"query":
{
"match":
{
"Name":"陈楚生"
}
}
}
结果
{
"took": 3,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"failed": 0
},
"hits": {
"total": 3,
"max_score": 1.8677558,
"hits": [
{
"_index": "user_document",
"_type": "user_1",
"_id": "AVYDbtj0OpxK9K1OdHXF",
"_score": 1.8677558,
"_source": {
"Identity": "360501199001016210",
"Name": "陈楚生",
"Age": 35,
"Birthday": "1981-07-25T14:12:12",
"Sex": false
}
},
{
"_index": "user_document",
"_type": "user_1",
"_id": "AVYDcPTKOpxK9K1OdHXH",
"_score": 0.6856395,
"_source": {
"Identity": "360501199001016212",
"Name": "陈楚河",
"Age": 40,
"Birthday": "1978-05-09T14:12:12",
"Sex": false
}
},
{
"_index": "user_document",
"_type": "user_1",
"_id": "AVYDcnK7OpxK9K1OdHXL",
"_score": 0.14631948,
"_source": {
"Identity": "360501199001016214",
"Name": "陈乔恩",
"Age": 36,
"Birthday": "1980-05-09T14:12:12",
"Sex": false
}
}
]
}
}
Match查询字符串时,会将文本内容分词并做Or操作
3、Multi Match 查询
GET _search
{
"query":
{
"multi_match": {
"query": "陈楚生",
"fields": ["Name","Identity"]
}
}
}
同Match查询,但是可以同时查多个字段
4、Query String 查询
GET _search
{
"query":
{
"query_string": {
"default_field": "Name",
"query": "陈楚生"
}
}
}
结果
{
"took": 3,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"failed": 0
},
"hits": {
"total": 3,
"max_score": 1.8677558,
"hits": [
{
"_index": "user_document",
"_type": "user_1",
"_id": "AVYDbtj0OpxK9K1OdHXF",
"_score": 1.8677558,
"_source": {
"Identity": "360501199001016210",
"Name": "陈楚生",
"Age": 35,
"Birthday": "1981-07-25T14:12:12",
"Sex": false
}
},
{
"_index": "user_document",
"_type": "user_1",
"_id": "AVYDcPTKOpxK9K1OdHXH",
"_score": 0.6856395,
"_source": {
"Identity": "360501199001016212",
"Name": "陈楚河",
"Age": 40,
"Birthday": "1978-05-09T14:12:12",
"Sex": false
}
},
{
"_index": "user_document",
"_type": "user_1",
"_id": "AVYDcnK7OpxK9K1OdHXL",
"_score": 0.14631948,
"_source": {
"Identity": "360501199001016214",
"Name": "陈乔恩",
"Age": 36,
"Birthday": "1980-05-09T14:12:12",
"Sex": false
}
}
]
}
}
分词查询,也可以想同时查询多个字段
5、Term 查询
GET _search
{
"query":
{
"term": {
"Identity": {
"value": "360501199001016210",
"boost": 2
}
}
}
}
结果
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 2.5040774,
"hits": [
{
"_index": "user_document",
"_type": "user_1",
"_id": "AVYDbtj0OpxK9K1OdHXF",
"_score": 2.5040774,
"_source": {
"Identity": "360501199001016210",
"Name": "陈楚生",
"Age": 35,
"Birthday": "1981-07-25T14:12:12",
"Sex": false
}
}
]
}
}
Term查询一般用来做精确查询,即查询关键字需要和被查询字段值完全一致才会被查询出来。
所以如果当被查询的字段是一个String类型时,该类型需要被显示标记为not_analyzed,
否则字段内容会先被分词器分成许多个词条,导致term查询不出结果。
可以使用Match 或Query_String查询会被分词的字段。
6、Terms 查询
GET _search
{
"query":
{
"terms": {
"Age": [
35,30
]
}
}
}
结果
{
"took": 2,
"timed_out": false,
"_shards": {
"total": 2,
"successful": 2,
"failed": 0
},
"hits": {
"total": 2,
"max_score": 0.8853251,
"hits": [
{
"_index": "user_document",
"_type": "user_1",
"_id": "AVYDbtj0OpxK9K1OdHXF",
"_score": 0.8853251,
"_source": {
"Identity": "360501199001016210",
"Name": "陈楚生",
"Age": 35,
"Birthday": "1981-07-25T14:12:12",
"Sex": false
}
},
{
"_index": "user_document",
"_type": "user_1",
"_id": "AVYDc4xqOpxK9K1OdHXN",
"_score": 0.8853251,
"_source": {
"Identity": "360501199001016214",
"Name": "唐嫣",
"Age": 30,
"Birthday": "1986-05-09T14:12:12",
"Sex": true
}
}
]
}
}
查询一个值数组范围内的所有文档
7、Range 查询
GET _search
{
"query":
{
"range": {
"Age": {
"from": 25,
"to": 35
}
}
}
}
结果
{
"took": 3,
"timed_out": false,
"_shards": {
"total": 2,
"successful": 2,
"failed": 0
},
"hits": {
"total": 3,
"max_score": 1,
"hits": [
{
"_index": "user_document",
"_type": "user_1",
"_id": "AVYDbtj0OpxK9K1OdHXF",
"_score": 1,
"_source": {
"Identity": "360501199001016210",
"Name": "陈楚生",
"Age": 35,
"Birthday": "1981-07-25T14:12:12",
"Sex": false
}
},
{
"_index": "user_document",
"_type": "user_1",
"_id": "AVYDch_LOpxK9K1OdHXK",
"_score": 1,
"_source": {
"Identity": "360501199001016214",
"Name": "赵默笙",
"Age": 28,
"Birthday": "1988-05-09T14:12:12",
"Sex": false
}
},
{
"_index": "user_document",
"_type": "user_1",
"_id": "AVYDc4xqOpxK9K1OdHXN",
"_score": 1,
"_source": {
"Identity": "360501199001016214",
"Name": "唐嫣",
"Age": 30,
"Birthday": "1986-05-09T14:12:12",
"Sex": true
}
}
]
}
}
范围查询
8、filter 过滤器
GET _search
{
"query": {
"filtered": {
"query": {
"bool": {
"should": [
{
"bool": {
"must":
{
"query_string": {
"default_field": "Name",
"query": "陈楚生"
}
},
"must_not":
{
"term": {
"Age": {
"value": 40
}
}
}
}
},
{
"bool": {
"should":
{
"term": {
"Identity": {
"value": "360501199001016211"
}
}
}
}
}
]
}
},
"filter": {
"range": {
"Age": {
"from": 30,
"to": 35
}
}
}
}
}
}
结果
{
"took": 3,
"timed_out": false,
"_shards": {
"total": 2,
"successful": 2,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 0.7757143,
"hits": [
{
"_index": "user_document",
"_type": "user_1",
"_id": "AVYDbtj0OpxK9K1OdHXF",
"_score": 0.7757143,
"_source": {
"Identity": "360501199001016210",
"Name": "陈楚生",
"Age": 35,
"Birthday": "1981-07-25T14:12:12",
"Sex": false
}
}
]
}
}
filter过滤器只会用于过滤文档,不会影响文档的得分情况
9、Constant Score 查询
GET _search
{
"query": {
"constant_score": {
"filter": {
"query": {
"query_string": {
"default_field": "Name",
"query": "陈楚生"
}
}
},
"boost": 1.2
}
}
}
结果
{
"took": 3,
"timed_out": false,
"_shards": {
"total": 2,
"successful": 2,
"failed": 0
},
"hits": {
"total": 3,
"max_score": 1,
"hits": [
{
"_index": "user_document",
"_type": "user_1",
"_id": "AVYDbtj0OpxK9K1OdHXF",
"_score": 1,
"_source": {
"Identity": "360501199001016210",
"Name": "陈楚生",
"Age": 35,
"Birthday": "1981-07-25T14:12:12",
"Sex": false
}
},
{
"_index": "user_document",
"_type": "user_1",
"_id": "AVYDcPTKOpxK9K1OdHXH",
"_score": 1,
"_source": {
"Identity": "360501199001016212",
"Name": "陈楚河",
"Age": 40,
"Birthday": "1978-05-09T14:12:12",
"Sex": false
}
},
{
"_index": "user_document",
"_type": "user_1",
"_id": "AVYDcnK7OpxK9K1OdHXL",
"_score": 1,
"_source": {
"Identity": "360501199001016214",
"Name": "陈乔恩",
"Age": 36,
"Birthday": "1980-05-09T14:12:12",
"Sex": false
}
}
]
}
}
该查询出来的文档得分是一个恒定的分数1
10、Bool 查询
GET _search
{
"query": {
"bool": {
"should": [
{
"bool": {
"must": [
{
"query_string": {
"default_field": "Name",
"query": "陈楚生"
}
}
],
"must_not": [
{
"term": {
"Age": {
"value": 40
}
}
}
]
}
},
{
"bool": {
"should": [
{
"term": {
"Identity": {
"value": "360501199001016211"
}
}
}
]
}
}
]
}
}
}
结果
{
"took": 2,
"timed_out": false,
"_shards": {
"total": 2,
"successful": 2,
"failed": 0
},
"hits": {
"total": 3,
"max_score": 0.7757143,
"hits": [
{
"_index": "user_document",
"_type": "user_1",
"_id": "AVYDbtj0OpxK9K1OdHXF",
"_score": 0.7757143,
"_source": {
"Identity": "360501199001016210",
"Name": "陈楚生",
"Age": 35,
"Birthday": "1981-07-25T14:12:12",
"Sex": false
}
},
{
"_index": "user_document",
"_type": "user_1",
"_id": "AVYDcHILOpxK9K1OdHXG",
"_score": 0.6971515,
"_source": {
"Identity": "360501199001016211",
"Name": "何家劲",
"Age": 52,
"Birthday": "1964-07-25T14:12:12",
"Sex": false
}
},
{
"_index": "user_document",
"_type": "user_1",
"_id": "AVYDcnK7OpxK9K1OdHXL",
"_score": 0.060769252,
"_source": {
"Identity": "360501199001016214",
"Name": "陈乔恩",
"Age": 36,
"Birthday": "1980-05-09T14:12:12",
"Sex": false
}
}
]
}
}
bool 查询用于组合不同的查询条件,其中可以有以下参数:must、must_not、should、filter
must:相当于and,Must中的查询条件最终会做一个and操作
must_not:对每一个查询子句做取反操作。
should:相当于or,should中的所有的子句做or操作。
elasticsearch-查询的更多相关文章
- elasticsearch 查询(match和term)
elasticsearch 查询(match和term) es中的查询请求有两种方式,一种是简易版的查询,另外一种是使用JSON完整的请求体,叫做结构化查询(DSL). 由于DSL查询更为直观也更为简 ...
- Func<T,T>应用之Elasticsearch查询语句构造器的开发
前言 之前项目中做Elasticsearch相关开发的时候,虽然借助了第三方的组件PlainElastic.Net,但是由于当时不熟悉用法,而选择了自己拼接查询语句.例如: string queryG ...
- ElasticSearch查询 第五篇:布尔查询
布尔查询是最常用的组合查询,不仅将多个查询条件组合在一起,并且将查询的结果和结果的评分组合在一起.当查询条件是多个表达式的组合时,布尔查询非常有用,实际上,布尔查询把多个子查询组合(combine)成 ...
- 利用kibana插件对Elasticsearch查询
利用kibana插件对Elasticsearch查询 Elasticsearch是功能非常强大的搜索引擎,使用它的目的就是为了快速的查询到需要的数据. 查询分类: 基本查询:使用Elasticsear ...
- ElasticSearch查询 第四篇:匹配查询(Match)
<ElasticSearch查询>目录导航: ElasticSearch查询 第一篇:搜索API ElasticSearch查询 第二篇:文档更新 ElasticSearch查询 第三篇: ...
- elasticsearch查询语句总结
query 和 filter 的区别请看:https://www.cnblogs.com/bainianminguo/articles/10396956.html Filter DSL term 过 ...
- (转载)elasticsearch 查询(match和term)
原文地址:https://www.cnblogs.com/yjf512/p/4897294.html elasticsearch 查询(match和term) es中的查询请求有两种方式,一种是简易版 ...
- ElasticSearch查询 第三篇:词条查询
<ElasticSearch查询>目录导航: ElasticSearch查询 第一篇:搜索API ElasticSearch查询 第二篇:文档更新 ElasticSearch查询 第三篇: ...
- ElasticSearch查询 第二篇:文档更新
<ElasticSearch查询>目录导航: ElasticSearch查询 第一篇:搜索API ElasticSearch查询 第二篇:文档更新 ElasticSearch查询 第三篇: ...
- ElasticSearch查询 第一篇:搜索API
<ElasticSearch查询>目录导航: ElasticSearch查询 第一篇:搜索API ElasticSearch查询 第二篇:文档更新 ElasticSearch查询 第三篇: ...
随机推荐
- spring mvc学习笔记二:@RequestMapping
@RequestMapping RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上.用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径. @RequestMapp ...
- MongoDB导入(mongoimport)-导出(mongoexport)工具使用
1.导出工具-mongoexport Mongodb中的mongoexport工具可以把一个collection导出为JSON格式或者CSV格式文件. (1).导出为JSON文件 /opt/mongo ...
- 托马斯微积分答案.djvu的书签
ans.bookmarks --------------------------- <?xml version="1.0" encoding="UTF-8" ...
- select 选项的子句
select 选项 : 关键字 all :全部(默认值)distinct:去掉重复的查询结果.语法:select all * from 表名: 别名: 关键字:as 语法:select * from ...
- 【C#】项目优化实战
[C#]项目优化实战 一. 数据库设计 1. 常量的枚举值直接存中文不要存数字(注意是常量,如果显示值可变就不能) 例如:男女,在数据库中不要存1和0,直接存男和女. 这样的好处:读取数据的时候可以避 ...
- Git学习(三)——暂存区、远程仓库、增删改管理
一.工作区和暂存区 工作区(Working Directory) 就是在你的电脑里能看到的目录 版本库(Repository) 工作区中的一个隐藏目录.git,这个不算工作区,而是Git版本库.Git ...
- 原生js arguments 用法
http://note.youdao.com/noteshare?id=fcd201e872e1ede16ce0057a1909f613
- 如何理解反向传播 Backpropagation 梯度下降算法要点
http://colah.github.io/posts/2015-08-Backprop/ http://www.zhihu.com/question/27239198 待翻译 http://blo ...
- 【总结】清除webbrowser cookie/session的6种方法
下面是我测试下来的6种清除webbrowser中cookie的6种方法: //方法一:调用 wininet.dll清除cookie (推荐) SuppressWininetBehavior(); // ...
- Android环境配置及运行helloWord案例
Android的环境搭建步骤,以及输出一个helloWorder 1:下载Android开发环境 及是: SDK adt-bundle-windows-x86_64-20140702 此时的版 ...