码迷,mamicode.com
首页 > 其他好文 > 详细

ElasticSearch基础使用

时间:2017-05-04 11:03:22      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:date   des   online   end   流行   搜索   blog   term   缓存   


1、must和filter的区别。
可以简单的理解为,filter有缓存,must无缓存。
如:

$conditions[‘bool‘][‘must‘][]


$conditions[‘bool‘][‘filter‘][]

2、针对文本型的查询,使用match
match会进行分词匹配。

$conditions[‘bool‘][‘filter‘][] = [‘match‘ => [‘title‘ => [‘query‘=> $title , "operator"=>"and"]],];

 

意思是匹配所有$title的分词。

比如$title是"2017夏季女装",分词可能会分为2017,夏季,女装。
那么如果operator的值是and,则表示,需要满足所有条件的才会匹配。

比如
"2017的夏季漂亮的女装"
"2017的夏季流行的男装和女装"
"夏季唯美女装,2017"
会匹配。

比如:
"2017的夏季漂亮的男装"就不会匹配。
因为没有"女装"这个分词。

如果operator的值是or,则表示只需要满足其中一个分词就会匹配。

3、如果是固定的关键词,则使用term
比如:

$conditions[‘bool‘][‘filter‘][] = [‘term‘ => [‘is_hot‘ => 1]],


匹配is_hot为1的数据

4、或搜索。在ElasticSearch中,或搜索,就是should
如:二选一

$conditions[‘bool‘][‘filter‘][] = [
    ‘should‘ =>[
        [‘term‘ => [‘is_hot‘ => 1]],
        [‘term‘ => [‘is_online‘ => 1]],
     ],
     ‘minimum_number_should_match‘ => 1,
];

 

命中is_hot为1,或者is_online为1的情况。

5、范围搜索。range
如:

$conditions[‘bool‘][‘filter‘][] = [
    [‘range‘ => [‘num‘ => [‘gte‘ => 100],],], // 数量大于等于100
    [‘range‘ => [‘price‘ => [‘gt‘ => 0],],], // 价格大于0
    [‘range‘ => [‘end_time‘ => [‘gte‘ => date(‘Y-m-d‘)],],], // 过期时间
    [‘range‘ => [‘start_time‘ => [‘lte‘ => date(‘Y-m-d H:i:s‘)]]],// 开始时间
];


6、全部凑一起后,准备好的用于ElasticSearch查询的json数据

{
    "bool": {
        "filter": [
            {
                "range": {
                    "num": {
                        "gte": 100
                    }
                }
            },
            {
                "range": {
                    "price": {
                        "gt": 0
                    }
                }
            },
            {
                "range": {
                    "end_time": {
                        "gte": "2017-05-04"
                    }
                }
            },
            {
                "range": {
                    "start_time": {
                        "lte": "2017-05-04 10:03:16"
                    }
                }
            },
            {
                "term": {
                    "is_delete": 0
                }
            },
            {
                "bool": {
                    "should": [
                        {
                            "term": {
                                "is_hot": 1
                            }
                        },
                        {
                            "term": {
                                "is_online": 1
                            }
                        }
                    ],
                    "minimum_number_should_match": 1
                }
            },
            {
                "bool": {
                    "should": [
                        {
                            "match": {
                                "title": {
                                    "query": "2017夏季女装",
                                    "operator": "and"
                                }
                            }
                        },
                        {
                            "match": {
                                "desc": {
                                    "query": "2017夏季女装",
                                    "operator": "and"
                                }
                            }
                        }
                    ],
                    "minimum_number_should_match": 1
                }
            }
        ]
    }
}

 

ElasticSearch基础使用

标签:date   des   online   end   流行   搜索   blog   term   缓存   

原文地址:http://www.cnblogs.com/codeaaa/p/6805579.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!