README__ES查询相关.md
Elasticsearch 查询相关
根据商品ID查询
GET /uat_spu/_search
{
"query": {
"term": {
"_id": "3588136"
}
}
}
查label_id
GET /uat_spu/_search
{"query":{"bool":{"must":[{"term":{ "platform_sku_essaone": true }},{"term":{"label_id_list":166}}]}}}
collapse折叠
GET /spu/_search
{
"_source": ["_id", "name_zh", "goods_id", "*"],
"size": 1000,
"query": {
"match": {
"name_zh": {
"query": "园艺"
}
}
},
"collapse": {
"field": "goods_id", // 按 goods_id 字段折叠分组
"inner_hits": {
"_source": ["_id"],
"name": "top_docs", // 自定义内部结果名称
"size": 3, // 每组取1个文档
"sort": [{"_score": "desc"}] // 按评分降序排序
}
},
"sort": ["_score"] // 确保外层排序兼容折叠功能
}
在架、某平台商品数
GET /uat_spu/_search
{
"track_total_hits": 100000,
"query": {
"bool": {
"filter": [
{
"term": {
"platform_sku_essaone": true
}
},
{
"term": {
"platform_rule_essaone": true
}
},
{
"terms": {
"goods_copyright": [
"1",
"2",
"3"
]
}
}
]
}
}
}
ID查询
GET /uat_spu/_search
{
"query": {
"term": {
"_id": "3302275"
}
}
}
商品名搜索
GET /spu/_search
{
"_source": {
},
"size": 1000,
"query": {
"match": {
"name_zh": {
"query": "园艺工具四件套",
"boost": 111.0
}
}
},
"aggs" :{
"goods_agg": {
"terms": {
"field": "goods_id",
"size": 100
},
"aggs": {
"top_hits": {
"top_hits": {
"size": 1,
"sort": [{"_score": "desc"}]
}
}
}
}
}
}
phrase搜索
GET /uat_spu/_search
{
"_source":["id","goods_id","name_zh"],
"query":{
"multi_match": {
"_name": "base_query",
"fields": [
"name_zh^2.0",
"goods_keyword_zh^1.0",
"category_name_zh^1.0",
"sale_category_keyword_zh^1.0",
"sub_name_zh^1.0"
],
"query": "戏水玩具"
}
}
}
aggs聚合查询
GET /spu/_search
{
"_source": {
"excludes": [
"embedding_name_zh",
"embedding_name_ru", "*"
],
"includes": ["_id", "name_zh"]
},
"size": 1000,
"query": {
"match": {
"name_zh": {
"query": "园艺"
}
}
},
"aggs" :{
"goods_agg": {
"terms": {
"field": "goods_id",
"size": 100
},
"aggs": {
"top_hits": {
"top_hits": {
"size": 1,
"sort": [{"_score": "desc"}]
}
}
}
}
}
}
检查某个字段是否有值
GET /uat_spu/_search
{
"track_total_hits": true,
"size": 0, // 不返回 hits,只返回总数
"query": {
"exists": {
"field": "goods_keyword_zh"
}
}
}
如果是nested字段,要这么查:
GET /uat_spu/_search
{
"track_total_hits": true,
"size": 0, // 只看总数
"query": {
"nested": {
"path": "embedding_pic_h14",
"query": {
"exists": {
"field": "embedding_pic_h14.vector" // 或 url,只要子文档里任意字段有值
}
}
}
}
}
分词测试
ik_smart分词器
POST spu/_analyze
{
"analyzer": "ik_smart",
"text": "14寸第4代-眼珠实身冰雪公仔带手动大推车,搪胶雪宝宝"
}
ik_max_word分词器
POST spu/_analyze
{
"analyzer": "ik_max_word",
"text": "14寸第4代-眼珠实身冰雪公仔带手动大推车,搪胶雪宝宝"
}
query_ansj分词器
POST spu/_analyze
{
"analyzer": "query_ansj",
"text": "14寸第4代-眼珠实身冰雪公仔带手动大推车,搪胶雪宝宝"
}
index_ansj分词器
POST spu_test/_analyze
{
"analyzer": "index_ansj",
"text": "14寸第4代-眼珠实身冰雪公仔带手动大推车,搪胶雪宝宝"
}
查商品名
GET /spu/_search
{
"_source": {
"includes": [
"name_zh",
"category_name_zh",
"sub_name_zh",
"label_id_list",
"brand_id",
"category_id",
"price_range",
"on_sell_days_boost"
]
},
"collapse": {
"field": "goods_id",
"inner_hits": {
"name": "top_hits",
"size": 1,
"_source": false // 避免返回完整_source
}
},
"from": 0,
"query": {
"function_score": {
"query": {
"bool": {
"minimum_should_match": 1,
"should": [
{
"multi_match": {
"_name": "base_query",
"fields": [
"name_zh^2.0",
"goods_keyword_zh^1.0",
"category_name_zh^1.0",
"sale_category_keyword_zh^1.0",
"sub_name_zh^1.0"
],
"minimum_should_match": "66%",
"query": "网球",
"tie_breaker": 0.301
}
}
]
}
}
}
},
"size": 1000,
"track_scores": true
}
配置相关
查看索引信息
GET /_cat/indices/spu?v
GET /spu/_mapping
GET /spu/_settings
设置刷新时间
PUT /spu/_settings
{
"refresh_interval": -1
}
PUT /uat_spu/_settings
{
"refresh_interval": "600s"
}
设置preload
POST uat_spu/_close
PUT uat_spu/_settings
{
"index.store.preload": []
}
PUT uat_spu/_settings
{
"index.store.preload": ["vex", "veq"]
}
# ["nvd", "dvd", "tim", "doc", "dim"]
POST uat_spu/_open
修改分片数目
主分片的数目(number_of_shards)只能创建索引的时候修改
查看索引的分片数量、大小分布
GET _cat/indices/uat_spu?v&s=store.size:desc
GET _cat/shards/uat_spu
类别查询:索引中该类别总数
GET /spu/_search
{
"track_total_hits": 10000000,
"query": {"terms": {
"sale_category_all": [37619]
}}
}
类别查询:模拟平台规则
除了类别限定,包括:
- essaone平台展示过滤
- 非专属商品
- status 2 4 5
- goods_copyright 1,2,3
GET /spu/_search
{
"track_total_hits": 10000000,
"aggs": {
"unique_count": {
"cardinality": {
"field": "goods_id"
}
}
},
"collapse": {
"field": "goods_id"
},
"query": {
"bool": {
"filter": [
{
"bool": {
"minimum_should_match": 1,
"should": [
{
"term": {
"platform_sku_essaone": true
}
},
{
"bool": {
"must": [
{
"term": {
"platform_rule_essaone": true
}
},
{
"bool": {
"must_not": {
"exists": {
"field": "platform_sku_essaone"
}
}
}
}
]
}
}
]
}
},
{
"bool": {
"must_not": {
"exists": {
"field": "buyer_id"
}
}
}
},
{
"terms": {
"sale_category_all": [37619]
}
},
{
"terms": {
"status": [2,4,5]
}
},
{
"terms": {
"goods_copyright": [
"1",
"2",
"3"
]
}
}
]
}
}
}
关键词查询
GET /spu/_search
{
"size": 1000,
"from": 0,
"_source": {
"includes": ["name_zh","goods_keyword_zh","sub_name_zh","category_name_zh","goods_keyword_zh","sale_category_keyword_zh"]
},
"query": {
"multi_match": {
"query": "遥控车",
"fields": ["name_zh^3.0", "goods_keyword_zh^1.0", "category_name_zh^1.0", "sale_category_keyword_zh^1.0", "sub_name_zh^1.0"],
"minimum_should_match": "64%",
"tie_breaker": 0.3,
"_name": "base_query"
}
},
"track_scores": true,
"collapse": {
"field": "goods_id"
}
}
慢查询日志
PUT /spu,spu_test/_settings
{
"index.search.slowlog.threshold.query.warn": "1s",
"index.search.slowlog.threshold.query.info": "800ms",
"index.search.slowlog.threshold.query.debug": "600ms",
"index.search.slowlog.threshold.query.trace": "400ms",
"index.search.slowlog.threshold.fetch.warn": "500ms",
"index.search.slowlog.threshold.fetch.info": "400ms",
"index.search.slowlog.threshold.fetch.debug": "200ms",
"index.search.slowlog.threshold.fetch.trace": "100ms"
}
GET /spu,spu_test/_settings?include_defaults=true&filter_path=**.slowlog
一些问题
有一个商品,只命中了"玩具"、没有命中"遥控",两个词命中一个词(注意是所有的字段 总共只命中一个词,玩具命中多次,但是没有任何一个字段有"遥控"),minimum_should_match应该没有达到76%吧,76%是按照什么算的?为什么命中了这个查询条件?
"multi_match": {
"_name": "base_query",
"fields": [
"name_zh^2.0",
"goods_keyword_zh^1.0",
"category_name_zh^1.0",
"sale_category_keyword_zh^1.0",
"sub_name_zh^1.0"
],
"minimum_should_match": "76%",
"query": "遥控玩具",
"tie_breaker": 0.3
}
tie_breaker 导致
GET /spu/_search
{
"_source": {
"excludes": [
"embedding_name_zh",
"embedding_name_ru", "*"
],
"includes": ["_id", "name_zh"]
},
"size": 1000,
"query": {
"match": {
"name_zh": {
"query": "园艺"
}
}
},
"aggs" :{
"goods_agg": {
"terms": {
"field": "goods_id",
"size": 100
},
"aggs": {
"top_hits": {
"top_hits": {
"size": 1,
"sort": [{"_score": "desc"}]
}
}
}
}
}
}
商品搜索查询模板
```json
GET /spu/_search
{
"_source": {
"includes": [
"name_zh"
]
},
"aggs": {
"category_stats": {
"terms": {
"field": "sale_category_one_all",
"size": 100
}
},
"spu_attr_stats": {
"terms": {
"field": "attribute_option_list",
"size": 50
}
},
"unique_count": {
"cardinality": {
"field": "goods_id"
}
}
},
"collapse": {
"field": "goods_id"
},
"from": 0,
"query": {
"function_score": {
"boost_mode": "multiply",
"functions": [
{
"filter": {
"term": {
"is_video": true
}
},
"weight": 1.05
}
],
"query": {
"bool": {
"filter": [
{
"terms": {
"status": [2,4,5]
}
}
],
"must": [
{
"bool": {
"minimum_should_match": 1,
"should": [
{
"multi_match": {
"_name": "base_query",
"fields": [
"name_en^3.0",
"goods_keyword_en^1.0",
"category_name_en^1.3",
"sale_category_keyword_en^1.0",
"sub_name_en^1.0"
],
"minimum_should_match": "75%",
"operator": "AND",
"query": "changshen flashing toys",
"tie_breaker": 0.9
}
},
{
"knn": {
"_name": "knn_query",
"field": "embedding_name_zh",
"k": 40,
"num_candidates": 120,
"query_vector": [...]
}
}
]
}
}
]
}
},
"score_mode": "sum"
}
},
"size": 1000,
"sort": [
{
"_score": {
"order": "desc"
}
}
],
"track_scores": true
}