PUT /products
{
"settings": {
"number\_of\_shards": 1,
"number\_of\_replicas": 1
},
"mappings": {
"properties": {
"product\_name": {
"type": "text"
},
"category": {
"type": "keyword"
},
"price": {
"type": "float"
},
"description": {
"type": "text"
},
"tags": {
"type": "keyword"
}
}
}
}
创建了一个名为products的索引。 number_of_shards定义了主分片数为1。
number_of_replicas定义了副本数为1。 mappings定义了索引中的字段类型和属性。
3.2 Match Query(匹配查询)
POST /products/_search
{
"query": {
"match": {
"product\_name": "laptop"
}
}
}
使用match查询来进行全文匹配查询。 在product_name字段中匹配关键词"laptop"。
返回与"laptop"相关度最高的文档。
3.3 Term Query(精确查询)
POST /products/_search
{
"query": {
"term": {
"category": "electronics"
}
}
}
使用term查询进行精确匹配查询。 在category字段中精确匹配"electronics"。
返回与"electronics"完全一致的文档。
3.4 Range Query(范围查询)
POST /products/_search
{
"query": {
"range": {
"price": {
"gte": 100,
"lte": 500
}
}
}
}
使用range查询进行范围查询。 在price字段中查询价格在100到500之间的文档。 返回价格在100到500之间的文档。
3.5 Bool Query(布尔查询)
POST /products/_search
{
"query": {
"bool": {
"must": [
{ "match": { "product\_name": "laptop" } },
{ "term": { "category": "electronics" } }
],
"must\_not": [
{ "range": { "price": { "gte": 2000 } } }
],
"should": [
{ "match": { "description": "lightweight" } },
{ "match": { "tags": "portable" } }
]
}
}
}
使用bool查询进行多条件查询逻辑。
must子句中同时满足product_name为"laptop"和category为"electronics"的文档。
must_not子句中排除价格大于等于2000的文档。
should子句中满足description包含"lightweight"或tags包含"portable"的文档。
返回符合以上条件的文档。
3.6 Match Phrase Query(短语匹配查询)
POST /products/_search
{
"query": {
"match\_phrase": {
"product\_name": "red laptop"
}
}
}
使用match_phrase查询进行短语匹配查询。 在product_name字段中匹配短语"red laptop"。 返回包含短语"red
laptop"的文档。
3.7 Prefix Query(前缀查询)
POST /products/_search
{
"query": {
"prefix": {
"product\_name": "ca"
}
}
}
使用prefix查询进行前缀匹配查询。 在product_name字段中匹配以"ca"开头的文档。 返回以"ca"开头的产品名称的文档。
3.8 Wildcard Query(通配符查询)
POST /products/_search
{
"query": {
"wildcard": {
"product\_name": "l\*t"
}
}
}
使用wildcard查询进行通配符模式匹配查询。 在product_name字段中匹配带有"l"和"t"之间任意字符的文档。
返回符合通配符模式的文档。
3.9 Fuzzy Query(模糊查询)
POST /products/_search
{
"query": {
"fuzzy": {
"product\_name": {
"value": "laptop",
"fuzziness": 2
}
}
}
}
使用fuzzy查询进行模糊匹配查询。 在product_name字段中匹配与"laptop"相似的文档。
fuzziness参数设置了相似度为2。 返回与"laptop"相似的文档。
3.10 Nested Query(嵌套查询)
POST /products/_search
{
"query": {
"nested": {
"path": "reviews",
"query": {
"match": {
"reviews.comment": "good"
}
}
}
}
}
使用nested查询进行嵌套查询。 在reviews嵌套字段中根据reviews.comment字段的值查询"good"的文档。
返回包含满足嵌套查询条件的文档。
3.11 Aggregation Query(聚合查询)
POST /products/_search
{
"size": 0,
"aggregations": {
"avg\_price": {
"avg": {
"field": "price"
}
},
"max\_price": {
"max": {
"field": "price"
}
},
"category\_count": {
"terms": {