0
点赞
收藏
分享

微信扫一扫

ES常用命令

菜菜捞捞 2021-09-21 阅读 48
我的博客

get http://47.103.39.187:9200/_cat/indices?pretty 查看所有索引
get http://47.103.39.187:9200/_cluster/health 查看集群健康状态
get http://47.103.39.187:9200/cswl_t_address_book 看一个索引的mapping/setting等信息
get http://47.103.39.187:9200/cswl_t_address_book/_mapping
get http://47.103.39.187:9200/cswl_t_address_book/_settings

get http://47.103.39.187:9200/cswl_t_address_book/_search 查询所有数据

查询10条数据
{
"query": {
"match_all": {}

}
,
"size": 10

}

http://47.103.39.187:9200/cswl_t_address_book/_count 条数

建索引时,如果需要对分词进行小写,需要在analyzer里设置filter:lowercase,这个对type=text有效,type=keyword的需要设置normalizer,如下:

{
    "settings": {
        "index.max_ngram_diff": 7,
        "analysis": {
            "analyzer": {
                "ngram_analyzer": {
                    "tokenizer": "ngram_tokenizer",
                    "filter":["lowercase"]
                }
            },
            "tokenizer": {
                "ngram_tokenizer": {
                    "type": "ngram",
                    "min_gram": 1,
                    "max_gram": 8
                }
            },
            "normalizer":{
                "lowercase":{
                    "type":"custom",
                    "filter":["lowercase"]
                }
            }
        },
        "number_of_replicas": 1
    },
    "mappings": {
        "dynamic": "strict",
        "properties": {
            "clientClassify": {
                "type": "text",
                "fields": {
                    "keyword": {
                        "type": "keyword",
                        "ignore_above": 256,
                        "normalizer":"lowercase"
                    }
                },
                "analyzer": "ngram_analyzer"
            },
            "orderStatus": {
                "type": "keyword",
                "normalizer":"lowercase"
            },
      }
   }
}

text下面用fields把text的倒排索引invert掉,这样可以通过clientClassify.keyword搜索整个值,也可以排序了.

在查询的时候,如果用:

{
    "query":{
        "match":{
            "clientClassify":"大批发客户"
        }
    }
}

会对"大批发客户"进行分词,可能分成"大批发" &"批发"&"客户"这3个词,再和倒排索引中的比较,和clientClassify建索引的时候用的分词器是一样的,因此大小写都是能搜到的.
用term搜索的话:

{
    "query":{
        "term":{
            "clientClassify.keyword":"大批发客户"
        }
    }
}

列名后面加".keyword",关键词要和ES document中的大小写一样且内容一样才能搜到. 如果索引中设置了normalizer:lowercase,那么客户端搜索前要把关键词转成小写.
term搜索不会对关键词进行分词.

举报

相关推荐

0 条评论