elasticsearchnested查询的简单介绍
本文目录一览:
- 1、Elasticsearch排序
- 2、ElasticSearch常用查询方法总结
- 3、elasticsearch 获取匹配属于哪个字段
- 4、ElasticSearch中的关于对象数组查询,请注意要正确使用Nested类型
Elasticsearch排序
ElasticSearch中的关于对象数组查询,请注意要正确使用Nested类型,使用不当会导致检索时结果不正确。
elasticsearchnested查询的简单介绍
elasticsearchnested查询的简单介绍
下面的例子就容易做到:
该查询会返回所有在title字段上至少命中一个词项的文档,并且基于section数据排序
也可以通过添加查询sort部分的missing属性为那些section字段缺失的文档定制排序行为
某些文档的release-dates字段里面储存了多个电影上映日期(同一部电影在不同的上映日期不同)我们可以构造查询请求:
例子中 es将基于每个文档的release_dates字段的小值进行排序
mode参数可以设置为以上值:
后面两个选项只对数值类型有效
es提供了基于坐标系数据的排序,我们通过一个实例了解这种类型的排序
例如,要查找特点里离自己近的一个机构
我们使用下面的这个映射:
查询如图:
查询结果:
我们可以看到,返回结果包含这个值:“sort”:[0.0]这是因为返回文档的地理坐标和查询中的坐标匹配
还可以设置mode属性为max,min,g
例如g代表:此时基于字段中的地理位置坐标与查询坐标的距离的均值排序
继续嵌套对象的排序, 对以下两种情形都适用 :
查询:
查询返回结果按照嵌套对象的usert字段小值降序
如果将子文档视为一种数据类型,则可以将查询简化为如下形式:
当我们使用对象类型时,可以简化查询,这是因为整个对象结构被当成一个lucene文档进行储存
有些时候,使用 nested_path 属性会更加便捷
按照下面的方式构造查询:
我们也可以使用 nested_filter 参数,改参数只对嵌套文档有效,利用这个参数,我们可以在排序前就已经通过一个过滤器在检索期排除了某些文档,而不是检索结果文档集中过滤它们
(注:内容整理自《深入理解Elasticsearch》)
ElasticSearch常用查询方法总结
ElasticSearch中的关于对象数组查询,请注意要正确使用Nested类型,使用不当会导致检索时结果不正确。
下面的例子就容易做到:
该查询会返回所有在title字段上至少命中一个词项的文档,并且基于section数据排序
也可以通过添加查询sort部分的missing属性为那些section字段缺失的文档定制排序行为
某些文档的release-dates字段里面储存了多个电影上映日期(同一部电影在不同的上映日期不同)我们可以构造查询请求:
例子中 es将基于每个文档的release_dates字段的小值进行排序
mode参数可以设置为以上值:
后面两个选项只对数值类型有效
es提供了基于坐标系数据的排序,我们通过一个实例了解这种类型的排序
例如,要查找特点里离自己近的一个机构
我们使用下面的这个映射:
查询如图:
查询结果:
我们可以看到,返回结果包含这个值:“sort”:[0.0]这是因为返回文档的地理坐标和查询中的坐标匹配
还可以设置mode属性为max,min,g
例如g代表:此时基于字段中的地理位置坐标与查询坐标的距离的均值排序
继续嵌套对象的排序, 对以下两种情形都适用 :
查询:
查询返回结果按照嵌套对象的usert字段小值降序
如果将子文档视为一种数据类型,则可以将查询简化为如下形式:
当我们使用对象类型时,可以简化查询,这是因为整个对象结构被当成一个lucene文档进行储存
有些时候,使用 nested_path 属性会更加便捷
按照下面的方式构造查询:
我们也可以使用 nested_filter 参数,改参数只对嵌套文档有效,利用这个参数,我们可以在排序前就已经通过一个过滤器在检索期排除了某些文档,而不是检索结果文档集中过滤它们
(注:内容整理自《深入理解Elasticsearch》)
基于词项的查询:不需要分析阶段,对单个词项进行作,在倒排索引中查找准确词项。
Terms Query:在给定字段内查询并返回准确符合一个或多个词项的查询结果。
Fuzzy Query:返回与给定词项 相似 的结果。相似程度用Lnshtein编辑距离来衡量。
1编辑距离指一个字符的变化,包括:
Fuzzy Query会创建一系列可能出现的,编辑距离为1的变化后的词项,然后用这些词项进行查询以获得终结果。
Wildcard Query:返回符合通配符表达式的查询结果。使用?代替单个字符,代替零个或几个字符。
基于全文的查询:高层查询,要先了解字段映射的信息。如果查询一个未分析的值字符串字段,会将整个查询字符串作为单个词项对待。如果查询一个已分析的值字符串字段,会先将查询字符串传递到一个合适的分析器, 然后生成一个供查询的词项列表。
Match Query:是一个高级全文查询,它既能处理全文字段,又能处理字段。Match Query主要的应用场景就是进行全文搜索,但无论需要查询什么字段, Match Query都应该会是的查询方式。
Query String Query:使用句法将给定的查询条件按And或Or的方式进行分析和拆分,返回包含查询字符串的结果。
Match Phrase Query:会分析文本,再从分析后的文本中生成phrase查询。
复合查询:组合查询语句,使查询结果符合多项标准,支撑更复杂的查询条件。
Bool Query:对查询语句进行与或非的组合。包含must(and), should(or), must_not(not)。
Table1 Comparison of ES Query Mods
Reference List:
elasticsearch 获取匹配属于哪个字段
ElasticSearch中的关于对象数组查询,请注意要正确使用Nested类型,使用不当会导致检索时结果不正确。
下面的例子就容易做到:
该查询会返回所有在title字段上至少命中一个词项的文档,并且基于section数据排序
也可以通过添加查询sort部分的missing属性为那些section字段缺失的文档定制排序行为
某些文档的release-dates字段里面储存了多个电影上映日期(同一部电影在不同的上映日期不同)我们可以构造查询请求:
例子中 es将基于每个文档的release_dates字段的小值进行排序
mode参数可以设置为以上值:
后面两个选项只对数值类型有效
es提供了基于坐标系数据的排序,我们通过一个实例了解这种类型的排序
例如,要查找特点里离自己近的一个机构
我们使用下面的这个映射:
查询如图:
查询结果:
我们可以看到,返回结果包含这个值:“sort”:[0.0]这是因为返回文档的地理坐标和查询中的坐标匹配
还可以设置mode属性为max,min,g
例如g代表:此时基于字段中的地理位置坐标与查询坐标的距离的均值排序
继续嵌套对象的排序, 对以下两种情形都适用 :
查询:
查询返回结果按照嵌套对象的usert字段小值降序
如果将子文档视为一种数据类型,则可以将查询简化为如下形式:
当我们使用对象类型时,可以简化查询,这是因为整个对象结构被当成一个lucene文档进行储存
有些时候,使用 nested_path 属性会更加便捷
按照下面的方式构造查询:
我们也可以使用 nested_filter 参数,改参数只对嵌套文档有效,利用这个参数,我们可以在排序前就已经通过一个过滤器在检索期排除了某些文档,而不是检索结果文档集中过滤它们
(注:内容整理自《深入理解Elasticsearch》)
基于词项的查询:不需要分析阶段,对单个词项进行作,在倒排索引中查找准确词项。
Terms Query:在给定字段内查询并返回准确符合一个或多个词项的查询结果。
Fuzzy Query:返回与给定词项 相似 的结果。相似程度用Lnshtein编辑距离来衡量。
1编辑距离指一个字符的变化,包括:
Fuzzy Query会创建一系列可能出现的,编辑距离为1的变化后的词项,然后用这些词项进行查询以获得终结果。
Wildcard Query:返回符合通配符表达式的查询结果。使用?代替单个字符,代替零个或几个字符。
基于全文的查询:高层查询,要先了解字段映射的信息。如果查询一个未分析的值字符串字段,会将整个查询字符串作为单个词项对待。如果查询一个已分析的值字符串字段,会先将查询字符串传递到一个合适的分析器, 然后生成一个供查询的词项列表。
Match Query:是一个高级全文查询,它既能处理全文字段,又能处理字段。Match Query主要的应用场景就是进行全文搜索,但无论需要查询什么字段, Match Query都应该会是的查询方式。
Query String Query:使用句法将给定的查询条件按And或Or的方式进行分析和拆分,返回包含查询字符串的结果。
Match Phrase Query:会分析文本,再从分析后的文本中生成phrase查询。
复合查询:组合查询语句,使查询结果符合多项标准,支撑更复杂的查询条件。
Bool Query:对查询语句进行与或非的组合。包含must(and), should(or), must_not(not)。
Table1 Comparison of ES Query Mods
Reference List:
elasticsearch的查询有两部分组成:query and filter。
ElasticSearch中的关于对象数组查询,请注意要正确使用Nested类型
ElasticSearch中的关于对象数组查询,请注意要正确使用Nested类型,使用不当会导致检索时结果不正确。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系 836084111@qq.com 删除。