ElasticSearch 查询DSL
-
查询DSL
在Elasticsearch中,搜索是通过使用基于JSON的查询来进行的。查询由两个子句组成-- 叶子查询子句 - 这些子句是匹配项,术语或范围,它们在特定字段中寻找特定值。
- 复合查询子句 - 这些查询是叶查询子句和其他复合查询的组合,以提取所需的信息。
Elasticsearch支持大量查询。查询以查询关键字开头,然后以JSON对象的形式包含条件和过滤器。下面描述了不同类型的查询。 -
匹配所有查询
这是最基本的查询;它返回所有内容,每个对象的得分为1.0。运行上面的代码,我们得到以下结果- -
全文查询
这些查询用于搜索全文,例如章节或新闻文章。该查询根据与该特定索引或文档相关联的分析器工作。在本节中,我们将讨论全文查询的不同类型。匹配查询此查询将文本或短语与一个或多个字段的值匹配。运行上面的代码后,我们得到如下所示的响应: -
多个匹配查询
此查询将文本或短语与多个字段匹配。运行上面的代码后,我们得到如下所示的响应: -
查询字符串查询
该查询使用查询解析器和query_string关键字。运行上面的代码后,我们得到如下所示的响应: -
词级查询
这些查询主要处理结构化数据,例如数字,日期和枚举。运行上面的代码后,我们得到如下所示的响应: -
范围查询
该查询用于查找具有给定值范围之间的值的对象。为此,我们需要使用运算符,例如-- gte - 大于等于
- gt - 大于
- lte - 小于等于
- lt - 小于
例如,观察下面给出的代码-运行上面的代码后,我们得到如下所示的响应:还存在其他类型的术语级别查询,例如-- 存在查询 - 如果某个字段具有非null值。
- 缺少查询 - 这与存在查询完全相反,该查询搜索没有特定字段或字段值为空的对象。
- 通配符或正则表达式查询 - 此查询使用正则表达式在对象中查找模式。
-
复合查询
这些查询是不同查询的集合,这些查询通过使用布尔运算符(例如and/or,或not)或针对不同的索引或具有函数调用等彼此合并。运行上面的代码后,我们得到如下所示的响应: -
地理查询
这些查询处理地理位置和地理位置。这些查询有助于找出学校或任何其他地理位置附近的地理对象。您需要使用地理位置数据类型。运行上面的代码后,我们得到如下所示的响应:现在,我们将数据发布到上面创建的索引中。运行上面的代码后,我们得到如下所示的响应: