ES的几种查询
发布网友
发布时间:2024-09-30 16:55
我来回答
共1个回答
热心网友
时间:2024-11-30 19:57
ES(Elasticsearch)提供了多种查询方法来检索和筛选数据,包括:
1. **查询字符串搜索**:以HTTP请求查询字符串的形式进行,如GET /ecommerce/proct/_search,用于快速临时搜索,如搜索名称包含"yagao"且按价格降序。生产环境中使用较少,适用于简单查询。
2. **查询构建语言(DSL)**:使用JSON格式在请求体构建复杂查询。例如,查询所有商品、按名称"yagao"匹配并降序排序价格。DSL适用于构建更复杂、持久的查询,常用于生产环境。
- - - - -
查询所有商品:`GET /ecommerce/proct/_search {"query": { "match_all": {} }}`
按名称和价格筛选:`GET /ecommerce/proct/_search {"query": {"match": {"name": "yagao"}}, "sort": [{"price": "desc"}]}`
3. **查询过滤器**:用于添加额外条件,如搜索名称包含"yagao"且价格大于25的产品:`GET /ecommerce/proct/_search {"query": {"bool": {"must": {"match": {"name": "yagao"}}, "filter": {"range": {"price": {"gt": 25}}}}}}`
4. **全文检索**:针对具有文本字段的搜索,如查找包含"yagao procer"的生产者,通过倒排索引进行匹配。`GET /ecommerce/proct/_search {"query": {"match": {"procer": "yagao procer"}}}`
5. **短语搜索**:要求查询串必须在文本中完整匹配,如查询"yagao procer"。`GET /ecommerce/proct/_search {"query": {"match_phrase": {"procer": "yagao procer"}}}`
6. **高亮搜索结果**:在查询结果中高亮显示匹配的文本部分。`GET /ecommerce/proct/_search {"query": {"match": {"procer": "procer"}}, "highlight": {"fields": {"procer": {}}}}`
这些查询方法根据需求的不同,提供了从简单到复杂的检索选项,适合不同的应用场景。