- 子条件查询:特定字段所指特定值
- 复合条件查询:以一定的逻辑组合子条件查询
子条件查询:
- query context
在查询过程中,除了判断文档是否满足查询条件外,ES还会计算一个_score来标识匹配程度 全文本查询:针对文本类型数据
①模糊匹配match关键字match会匹配到elasticsearch或者入门相关的词
{
“query”:{
“match”:{
“title”:”elasticsearch入门”
}
}
}②短语匹配
关键字match_phrase,被匹配的词中必须有“elasticsearch入门”,并且词语结构和顺序都要一样,比如”elasticsearch快速入门”是无法匹配的
{
“query”:{
“match_phrase”:{
“title”:”elasticsearch入门”
}
}
}③多个字段匹配查询
关键字multi_match.query后跟的是查询条件,fields后面是需要查询的字段(此处用中括号“]”)
{
“query”:{
“multi_match”:{
“query”:”悟空”,
“fields”:[“author”,”title”]
}
}
}④语法查询
关键字query_string, 可以在条线中用“OR” ,”AND” (注意大写)
{
“query”:{
“query_string”:{
“query”:”悟空 OR 李四”,
“fields”:[“author”,”title”]
}
}
}字段级别查询:针对结构化数据,入数字,日期等
①普通查询关键字term,
{
“query”:{
“term”:{
“word_count”:5000
}
}
}②范围查询,可以用于数字和时间(时间可以用“now”表示现在)
gte大于等于,lte小于等于。(e=equals表示等于),
{
“query”:{
“range”:{
“word_count”:{
“gte”:100,
“lte”:5000
}
}
}
}filter context
在查询过程中,只判断该文档是否满足条件。只有yes或者nofilter是elasticsearch用来做数据过滤的,而且对数据进行缓存,需要结合bool使用
{
“query”:{
“bool”:{
“filter”:{
“term”:{
“word_count”:500
}
}
}
}
}复合条件查询
固定分数查询:关键字constant_score
固定分数查询只支持filter用来过滤数据,boots用来指定匹配度(匹配分数)。我用的6的版本,如果不知道的话查询的数据都是1
{
“query”:{
“constant_score”:{
“filter”:{
“match”:{
“title”:”elasticsearch人门”
}
},
“boost”:0.6931472
}
}
}布尔查询
①,should表示应当,内部的match是“或”的关系{
“query”:{
“bool”:{
“should”:[
{
“match”:{
“author”:”李四”
}
},
{
“match”:{
“title”:”elasticsearch”
}
}
]
}
}
}②,must表示必须,内部的match是“与”的关系.
{
“query”:{
“bool”:{
“must”:[
{
“match”:{
“author”:”李四”
}
},
{
“match”:{
“title”:”elasticsearch”
}
}
]
}
}
}③ must_not 相当于“非”,必须不是条件中的数据
{
“query”:{
“bool”:{
“must_not”:[
{
“match”:{
“author”:”李四”
}
},
{
“match”:{
“title”:”elasticsearch”
}
}
]
}
}
}
群号:790579479,只限交流,欢迎大神前来指点