0
点赞
收藏
分享

微信扫一扫

ElasticSearch-基础篇

ElasticSearch

全文搜索属于最常见的需求,开源的Elasticsearch 是目前全文搜索引擎的首选。 它可以快速地储存、搜索和分析海量数据。维基百科、Stack Overflow、Github 都采用它 https://www.elastic.co/

Elasticsearch: 权威指南 https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html

image.png

下载 安装 elasticsearch

docker pull elasticsearch:7.4.2  下载ES
docker pull kibana:7.4.2  下载可视化界面

mkdir -p /mydata/elasticsearch/config
mkdir -p /mydata/elasticsearch/data

echo "http.host: 0.0.0.0">>/mydata/elasticsearch/config/elasticsearch.yml

/*/*/注意e ES_JAVA_OPTS="-Xms64m -Xmx512m" \ 一定要设置很大
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e “discovery.type=single-node” \
-e ES_JAVA_OPTS="-Xms64m -Xmx512m" \
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.4.2

chmod -R 777 /mydata/elasticsearch/ 加权限
访问 http://192.168.56.10:9200/ 显示json 安装成功 

image.png

安装运行Kibana

docker run --name kibana -e ELASTICSEARCH_HOSTS=http://192.168.56.10:9200 -p 5601:5601 \
-d kibana:7.4.2

访问 http://192.168.56.10:5601/  安装成功  

image.png

初步检索

1、cat
GET/_cat/nodes: 查看所有节点
GET/_cat/health: 查看es健康状况
GET/_cat/master: 查看主节点
GET/_cat/indices: 查看所有索引 show databases;

image.png

POST 新增:不带id,带id但之前没数据| 修改:带id,并且有数据

PUT 必须带上ID

GRT 查询

测试数据

es数据:https://download.elastic.co/demos/kibana/gettingstarted/accounts.zip 文档地址教程 https://www.elastic.co/guide/en/elasticsearch/reference/current/getting-started-search.html

发起查询

固定写法 query json 查询条件 sort 排序条件 match_all查询所有 Query DSL 领域对象语言

GET /bank/_search 
{
  "query": {   
    "match_all": {}
  },
  "sort": [
    {
      "account_number": "asc"
    }
  ],
  "from": 0,
  "size": 5, //每页大小
  "_source":[ "balance","firstname"]  //指定返回字段
}

image.png

Match 查询 指定匹配查询

GET /bank/_search //##全文检索 按照评分进行排序 会对检索条件进行分词匹配
{
  "query": {
    "match": {
      "address": "Kings" 
    }
  }
}
返回
"hits" : {
    "total" : {
      "value" : 2, //命中数几条
      "relation" : "eq"
    },
    "max_score" : 5.9908285, //最大得分
    "hits" : [

短词匹配 完全匹配 不分割 (但是 不区分大小写)

GET /bank/_search
{
  "query": {
    "match_phrase": {
      "address": "mill lane"
    }
  }
}

多字段匹配

GET /bank/_search
{
  "query": {
    "multi_match": {
      "query": "mill Movico", //查询mill 或mill 
      "fields": ["address","address"]  //在哪里包含
    }
  }
}

多条件 bool 查询

GET /bank/_search
{
  "query": {
    "bool": {  bool 查询
      "must": [ //must 必须满足
        {"match": {  //match 条件
          "gender": "m"
        }},
        {"match": {
          "address": "Mill"
        }}
      ],
      "must_not": [ //必须不匹配
        {"match": { 
          "age": "38"
        }}
      ],
      "should": [ //满足也行 不满足也行 满足给max_score 相关性得分
        {"match": {
          "lastname": "Wallace"
        }}
      ]
    }
  }
}

must 过滤 支持相关性得分

GET /bank/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "range": {
            "age": {
              "gte": 10,
              "lte": 30
            }
          }
        }
      ]
    }
  }
}


filter 过滤 不支持相关性得分

GET /bank/_search
{
  "query": {
    "bool": {
      "filter": [
        {
          "range": {
            "age": {
              "gte": 10,
              "lte": 30
            }
          }
        }
      ]
    }
  }

term 查询 非文本字段

比如数字之类的 完全匹配;文本字段使用match查询 和match一样。匹配某个属性的值。全文检索字段用match,其他非text字段匹配用term.

GET /bank/_search
{
  "query": {
    "term": { 
        "balance": "29104"
    }
  }
}
举报

相关推荐

0 条评论