基于关键字的查询(Match Query)
匹配查询用于搜索包含特定关键字的文档。 它将返回至少具有一个相应关键字的文档。
laptop
示例:查找名称中 包含关键字的产品 products Index
。
GET /products/_search
{
"query": {
"match": {
"name": "laptop"
}
}
}
必须包含所有关键字(Match Phrase Query)
匹配短语查询要求查询中的所有关键字在文档文本中以正确的顺序连续出现。
示例:查找描述中包含短语 的产品 HP laptop
。
GET /products/_search
{
"query": {
"match_phrase": {
"description": "HP laptop"
}
}
}
必须包含整个短语前缀(Match Phrase Prefix Query)
匹配短语前缀查询与匹配短语类似,但它允许最后一个关键字的部分匹配。
示例:查找描述以 开头的产品 laptop
。
GET /products/_search
{
"query": {
"match_phrase_prefix": {
"description": "laptop"
}
}
}
基于术语的查询(Term Query)
术语查询用于搜索具有指定的精确值的字段的文档。
示例:查找 category
字段值为 的产品 laptop
。
GET /products/_search
{
"query": {
"term": {
"category": "laptop"
}
}
}
基于范围的查询(Range Query)
范围查询有助于搜索字段值在指定范围内的文档。
示例:查找价格在 500 到 1000 之间的产品。
GET /products/_search
{
"query": {
"range": {
"price": {
"gte": 500,
"lte": 1000
}
}
}
}
术语级别查询
术语级查询允许根据特定条件搜索文档,例如精确、前缀、范围、通配符和模糊查询。
示例:查找名称开头 laptop
且价格在 500 到 1000 之间的产品。
GET /products/_search
{
"query": {
"bool": {
"must": [
{
"prefix": {
"name": "laptop"
}
},
{
"range": {
"price": {
"gte": 500,
"lte": 1000
}
}
}
]
}
}
}
Full-Text 询问
Full-Text 查询允许使用文本分析算法搜索文本字段以查找相似的单词或同义词。
示例:查找描述包含 或 的 computer
产品 laptop
。
GET /products/_search
{
"query": {
"match": {
"description": "computer laptop"
}
}
}
布尔查询
Boolean
查询允许将多个子查询与不同的搜索条件(例如必须包含全部、必须包含至少一个或不得包含)组合起来,以达到精确的搜索结果。
示例:查找商品名称 category
和 laptop
价格在 500 到 1000 之间的产品。
GET /products/_search
{
"query": {
"bool": {
"must": [
{
"term": {
"category": "laptop"
}
},
{
"range": {
"price": {
"gte": 500,
"lte": 1000
}
}
}
]
}
}
}
这些是 中的基本搜索查询 Elasticsearch,以及每种查询类型的图示示例。 使用时 Elasticsearch,您可以组合这些查询来灵活高效地搜索数据。