需要了解elasticSearch基础入门可以查看https://blog.csdn.net/u014232211/article/details/120026239
下面的例子基于这份数据来查询
?
高级查询
a.子条件查询 特定字段查询所指特定值
- Query Contexy:
- 概念: 在查询过程中,除了判断文档是否满足查询条件外,ES还会计算一个_score来表示匹配程度,旨在判断目标文档和查询条件匹配的有多好/多么吻合。
- 全文本查询: 针对文本类型数据
- 模糊匹配(查询author的数据是problem1的蔬果)
{
"query":{
"match":{
"author": "problem1"
}
}
} - 其余匹配(整个字段匹配,不拆分单词去匹配)
{
"query":{
"match_phrase":{
"title": "NBA333"
}
}
} - 多个字段匹配 (author和titile中包含NBA333的字段)
{
"query":{
"multi_match":{
"query": "NBA333",
"fields": ["author","title"]
}
}
} - ?字符串查询
{
"query":{
"query_string":{
"query": "problem1 AND problem2",
"fields": ["author"]
}
}
} -
-
字段级别查询: 针对结构化数据,如数字、日期等
- ??字段查询
{
"query":{
"term":{
"word_count": "2000"
}
}
} - 范围查询
{
"query":{
"range":{
"word_count": {
"gte": 1000,
"lte": 2000000
}
}
}
} (日期类型) {
"query":{
"range":{
"publish_date": {
"gte": "2021-01-01",
"lte": "2021-02-02"
}
}
}
}
- Filter Context
b.复合条件查询 以一定的逻辑组合子条件查询
- 固定分数查询:
{
"query":{
"constant_score":{
"filter":{
"match":{
"author":"problem1"
}
},
"boost":10
}
}
} - 布尔查询:
{
"query":{
"bool":{
"should":[
{
"match":{
"author": "problem1"
}
},
{
"match":{
"title": "男孩"
}
}
]
}
}
} {
"query":{
"bool":{
"must_not":[
{
"match":{
"author": "problem1"
}
},
{
"match":{
"title": "男孩"
}
}
],
"filter":{
"term":{
"word_count": 5000
}
}
}
}
}
|