本文共 3818 字,大约阅读时间需要 12 分钟。
Elasticsearch的搜索API提供了强大的文档搜索功能,以下是常用的操作方法。请通过Postman等工具进行测试,接口请求的前缀地址统一为Elasticsearch部署IP地址+端口号(如http://192.168.51.4:9200)。
POST /search_demo/_doc/_search
multi_match用于在多个字段中进行全文匹配,可以灵活配置匹配字段。
{ "query": { "multi_match": { "query": "组合", "fields": ["desc", "nickname"] } }, "_source": ["id", "nickname", "desc"]} { "took": 3, "timed_out": false, "hits": { "total": { "value": 1, "relation": "eq" }, "max_score": 2.2874916, "hits": [ { "_index": "search_demo", "_type": "_doc", "_id": "1007", "_score": 2.2874916, "_source": { "nickname": "老男孩", "id": 1007, "desc": "确实是个很好的组合,筷子 筷子" } } ] }} boost用于为特定字段设置权重,提升相关性得分。常用于搜索商品名称或关键词时。
{ "query": { "multi_match": { "query": "好的", "fields": ["desc", "nickname*10"] } }, "_source": ["id", "nickname", "desc"]} { "took": 4, "hits": { "total": { "value": 9, "relation": "eq" }, "max_score": 3.1980762, "hits": [ { "_index": "search_demo", "_type": "_doc", "_id": "1004", "_score": 3.1980762, "_source": { "nickname": "红帽子", "id": 1004, "desc": "好的系统必须拥有稳定的系统结构" } }, // 其他结果... ] }} bool查询用于复杂的文本组合查询,支持must、should、must_not等布尔逻辑。
{ "query": { "bool": { "must": [ { "multi_match": { "query": "好的", "fields": ["desc", "nickname"] } }, { "term": { "sex": 0 } }, { "term": { "birthday": "1992-12-24" } } ] } }, "_source": ["id", "sex", "nickname", "desc", "birthday"]} { "query": { "bool": { "must": [ { "match": { "desc": "好的" } }, { "match": { "nickname": "好的" } } ], "should": [ { "match": { "sex": 1 } } ], "must_not": [ { "term": { "birthday": "1993-01-24" } } ] } }, "_source": ["id", "sex", "nickname", "desc", "birthday"]} { "query": { "bool": { "should": [ { "match": { "desc": { "query": "好的", "boost": 2 } } }, { "match": { "desc": { "query": "男孩", "boost": 20 } } } ] } }, "_source": ["id", "sex", "nickname", "desc", "birthday"]} 转载地址:http://sjhx.baihongyu.com/