hhhzua 发布的文章

我的个人博客:逐步前行STEP

1、docker system df

查看docker磁盘占用

2、docker system prune

Docker 的 docker system prune 命令可以删除那些已停止的容器、dangling 镜像、未被容器引用的 network 和构建过程中的 cache

我的个人博客:逐步前行STEP

mysql加锁语句:

selct * from table_name where id=1 for update

使用方式以及注意事项:

1、该语句必须在事务中执行才生效
2、如果该语句中的查询未正确使用索引(不一定是主键),则该语句会锁全表
3、如果该语句的查询中索引生效了,只会锁定查询的行
4、该锁会在事务提交的时候释放

我的个人博客:逐步前行STEP

首先,es不支持直接更改mappinng,所以,更改 mapping 实质上是重建索引。
操作步骤如下:
1、为当前这个索引old_index设置一个别名my_index

curl -XPOST localhost:9200/_aliases -d '  
{  
    "actions": [  
        { "add": {  
            "alias": "my_index",  
            "index": "old_index"  
        }}  
    ]  
}  '

2、通过别名my_inndex访问索引old_index
3、重建一个新的索引new_index,在此时使用需要的字段属性;

curl -XPUT localhost:9200/new_index
{
    "mappings": {
        "doc": {
            "properties": {
                "id": {
                    "type": "long"
                },
                "user_id": {
                    "type": "long"
                }
            }
        }
    },
    "settings": {
        "index": {
            "number_of_shards": "5",
            "number_of_replicas": "1"
        }
    }
}

4、迁移旧的索引old_index数据到新的索引new_index上;

curl -XPOST localhost:9200/_reindex
{
    "source":{
        "index":"old_index"
    },
    "dest":{
        "index":"new_index"
    }
}

5、为索引new_index设置一个别名为my_index ,同时删除该别名对旧索引old_index的指向:

curl -XPOST localhost:9200/_aliases -d '  
{  
    "actions": [  
        { "remove": {  
            "alias": "my_index",  
            "index": "old_index"  
        }},  
        { "add": {  
            "alias": "my_index",  
            "index": "new_index"  
        }}  
    ]  
}  '

6、删除索引old_index

curl -XDELETE localhost:9200/old_index  

我的个人博客:逐步前行STEP

1、$exist

查询 是否存在这个字段

//查询所有存在标签你字段的博客
App\Blog::where('tags','$exist',true)->get()

2、$in

查询 是否存在 【数组字段中的元素在列表中出现】

//查询所有包含标签tag_a或者tag_b的博客
App\Blog::whereRaw(['tags'=>['$in'=>["tag_a","tag_b"]]])->get()

3、$all

查询 是否存在 【数组字段中的元素全部在列表中】

//查询所有包含标签tag_a和tag_b的博客
App\Blog::whereRaw(['tags'=>['$all'=>["tag_a","tag_b"]]])->get()

4、$size

查询数组字段 tags 满足指定元素个数的文档

App\Blog::where('tags', 'size', 3)->get();

5、$where

条件过滤语句

App\Blog::whereRaw(['$where'=>'this.image_cnt = this.verify_image_cnt'])->get()

我的个人博客:逐步前行STEP

以下配置实现了 在docker环境中安装scwl中文分词的php扩展:

    
# scwl
RUN curl 'http://www.xunsearch.com/scws/down/scws-1.2.3.tar.bz2' -o scws-1.2.3.tar.bz2  \
    && tar -xjf scws-1.2.3.tar.bz2  \
    && rm scws-1.2.3.tar.bz2  \
    && mv scws-1.2.3 /tmp  \
    && cd /tmp/scws-1.2.3  \
    && ./configure --prefix=/usr/local/scws  \
    && make  \
    && make install  \
    && cd /usr/local/scws/etc \
    && wget http://www.xunsearch.com/scws/down/scws-dict-chs-gbk.tar.bz2 \
    && wget http://www.xunsearch.com/scws/down/scws-dict-chs-utf8.tar.bz2 \
    && tar xvjf scws-dict-chs-gbk.tar.bz2 \
    && tar xvjf scws-dict-chs-utf8.tar.bz2 \
    && cd /tmp/scws-1.2.3/phpext \
    && phpize \
    && ./configure --with-scws=/usr/local/scws \
    && make  \
    && make install 

这种方式就是把所有需要执行的命令罗列出来按序执行。