elasticsearch(3)- 查询

ES查询

ES支持多种方式查询,这里介绍几种常用的,其实原理都是一样的
服务器curl
postman
kibana

kibana安装

因为这个有提示功能,所以推荐使用这个

# 下载6.6.0
wget https://artifacts.elastic.co/downloads/kibana/kibana-6.0.0-linux-x86_64.tar.gz

# 解压
tar -zxvf kibana-6.0.0-linux-x86_64.tar.gz

# 修改配置文件
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.url: "http://localhost:9200"

# 配置环境变量
export KIBANA_HOME=/opt/kibana/kibana-6.0.0-linux-x86_64
export PATH=$PATH:$KIBANA_HOME/bin

#启动
bin/kibana &
界面图.png

index操作

# 添加索引
curl -X PUT 'localhost:9200/weather'

# 看到以下信息则安装成功
# {"acknowledged":true,"shards_acknowledged":true,"index":"weather"}

# 删除index
curl -X DELETE 'localhost:9200/weather'

# 查看es自动创建的mapping
http://localhost:9200/store/employee/_mapping

url后跟参数传递

查询使用json

我全部写在一个json里面,可以自行添加,减少

# 搜索
# 常用的参数在这里  可以自行拼接
GET indexName/_search?from=1&size=10&scroll=1m
{ #返回版本信息
  "version": true,
  # 解释计算得分
  "explain":true, 
  "from": 0,
  "size": 20, 
  "_source": {
    "includes": ["c_*","d_cjsj"],
    "excludes": ["c_y*","c_x*","c_p*","c_b*"]
  }, 
  #进行切片 用于处理数据量过大的时候
  "slice": {
        "id": 0,
        "max": 3
    },
  "query": {
    # match会对关键词进行分词再查询
   "match": {
      "name": {
        "query": "商1"
        , "operator": "and"
      }
    },
    "term": {
      "tbName": "t_xy_kc" 
    },
    # 多字段匹配 注意和term只能存在一个
    "terms": {
      "c_kcmc": [
        "测试",
        "V"
      ]
    },
    # bool过滤器  注意和term只能存在一个
    "bool": {
      "filter":{
        "term":
        {"tbName":"t_xy_kc"}
      }
    }
  },"highlight": {
    "fields": {
      "c_kcmc":{
        "force_source":"true"
    }
  }},
  "sort": [
    {
      "d_cjsj": {
        "order": "desc"
      },
      {"age":"desc"},
      # 这里 order用作num类型 min max avg sum median(中位数)
      {"price":{"order":"asc","mode":"avg"}}
    }
  ],
  # 自定义script 定义脚本
  "script_fields": {
    "test": {
      "script": "params['_source']['c_kcmc']"
    }
  },
  # 对匹配字段的tokern进行高亮 
  "highlight": {
    "fields": {
      "c_kcmc":{
        "force_source":"true"
    }
  }},
  # 为某些字段格式化 一般支持数字和日期 也可以在mapping中定义
  "docvalue_fields": [{
    "field":"d_cjsj",
    "format":"yyyy-MM-dd"
  }]
}

分词器测试

#分词器测试 默认标准分词器
GET /_analyze
{
  "analyzer" : "standard",
  "filter" : ["lowercase"],
  "text" : ["this is a test", "the second text"]
}
# ik中文分词器
GET /_analyze
{ 
  "tokenizer" : "keyword",
  "filter": ["浙江"], 
  "explain":true, 
  "analyzer" : "ik_max_word",
  "text" : "六一儿童节快乐"
}

你可能感兴趣的:(elasticsearch(3)- 查询)