美文网首页
elasticsearch深度搜索

elasticsearch深度搜索

作者: liujianhuiouc | 来源:发表于2018-07-25 15:56 被阅读0次

复杂查询条件

IS NULL的查询
tags:[null]、tags:null均属于空值的范畴

{
    "query": {
        "constant_score": {
            "filter": {
                "bool": {
                    "must_not": {
                        "exists": {
                            "field": "age"
                        }
                    }
                }
            }
        }
    }
}

match查询必须匹配两个字段,默认下match是取或的关系,比如"match:{"name":"love you"}",查询的时候会先利用解析器分别通过term查询loveyou

{
    "query": {
        "constant_score": {
            "filter": {
                "match": {
                    "about": {
                        "query": "love to i",
                        "operator": "and"
                    }
                }
            }
        }
    }
}

term查询的例子

{
    "query": {
        "constant_score": {
            "filter": {
                "term": {
                    "about": "love"
                }
            }
        }
    }
}

精度的控制

{
    "query": {
        "constant_score": {
            "filter": {
                "match": {
                    "about": {
                        "query": "love i you",
                        "minimum_should_match": "75%"
                    }
                }
            }
        }
    }
}

minimum_should_match用于设置必须匹配的词数,可以是匹配的数量或者是输入的词的百分比,不管这个值设置为什么,至少要匹配一个词的文档才会返回

组合查询

通过 bool关键字来组合相关的查询,子查询可以是must,must_not,should之一,should中的子句可以都不需要满足,除非没有must子句的时候的至少需要匹配一个should中的条件。

{
    "query": {
        "bool": {
            "should": [{
                "match": {
                    "about": "love"
                }
            }, {
                "match": {
                    "about": "you"
                }
            }],
            "minimum_should_match": 2
        }
    }
}

其中的match也可以改为term当做全词匹配。

词的权重设置

{
    "query": {
        "bool": {
            "must": {
                "match": {
                    "content": {
                        "query": "full text search",
                        "operator": "and"
                    }
                }
            },
            "should": [{
                    "match": {
                        "content": {
                            "query": "Elasticsearch",
                            "boost": 3
                        }
                    }
                },
                {
                    "match": {
                        "content": {
                            "query": "Lucene",
                            "boost": 2
                        }
                    }
                }
            ]
        }
    }
}

boost来设置某个词项的权重,默认是1,如果需要加强权重,可以设置一个大于1的值,值越大表现越重要。

相关文章

网友评论

      本文标题:elasticsearch深度搜索

      本文链接:https://www.haomeiwen.com/subject/qtgymftx.html