ElasticSearch

一、

1.语法对应MYSQL

mysql 数据库---elasticSearch 索引
mysql 表 ---elasticSerach 类型
mysql 查询的出的数据   --elasticSearch 文档

2.elasticSearch --倒排索引

分词,索引,相关性得分

3.分词器

4、es的算法是根据你的匹配分数来获取。sort

二、es常用命令语法

1、保存一个数据,在那个索引下那个类型下。

post和put 都可以

post:可以不指定id

put:可以指定id

PUT customer/external/1

2 、查看所有节点

GET /_cat/nodes:查看所有节点

3、查看es健康状态

GET /_cat/health:查看 es 健康状况

4、查看主节点

GET /_cat/master:查看主节点

5、查看所有索引

GET /_cat/indices:查看所有索引

6、查询文档

GET customer/external/1

7、查询结果个参数解析

8、更新post 或者PUT

 

 9、删除文档或者索引(没有删除类型这个操作)

DELETE customer/external/1
DELETE customer

10、检索所有信息_search

GET bank/_search
{
  "took" : 81,   
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 1000,
      "relation" : "eq"
    },
    "max_score" : null,
    "hits" : [
      {
        "_index" : "bank",
        "_type" : "account",
        "_id" : "0",
        "_score" : null,
        "_source" : {
          "account_number" : 0,
          "balance" : 16623,
          "firstname" : "Bradshaw",
          "lastname" : "Mckenzie",
          "age" : 29,
          "gender" : "F",
          "address" : "244 Columbus Place",
          "employer" : "Euron",
          "email" : "bradshawmckenzie@euron.com",
          "city" : "Hobucken",
          "state" : "CO"
        },
        "sort" : [
          0
        ]
      },
响应结果解释: 
took - Elasticsearch 执行搜索的时间(毫秒) 
time_out - 告诉我们搜索是否超时 
_shards - 告诉我们多少个分片被搜索了,以及统计了成功/失败的搜索分片 
hits - 搜索结果 
hits.total - 搜索结果 
hits.hits - 实际的搜索结果数组(默认为前 10 的文档) 
sort - 结果的排序 key(键)(没有则按 score 排序) 
score 和 max_score –相关性得分和最高得分(全文检索用)

11、查询json串的DSL 语法

query 定义如何查询,
match_all 查询类型【代表查询所有的所有】,es 中可以在 query 中组合非常多的查 询类型完成复杂查询 除了 query 参数之外,我们也可以传递其它的参数以改变查询结果。如 sort,size 
from+size 限定,完成分页功能 
sort 排序,多字段排序,会在前序字段相等时后续字段内部排序,否则以前序为准
GET bank/_search
{
  "query": {
    "match_all": {}
  },
  "sort": [
    {
      "balance": {
        "order": "desc"
      }
    }
  ],
  "from": 5,
  "size": 5,
  "_source": ["balance","firstname"]
  
}

12、match【匹配查询】

13、match_phrase【短语匹配】

14、multi_match【多字段匹配】

15、bool【复合查询】

16、filter【结果过滤】

17、term 

match 一样。匹配某个属性的值。 全文检索字段用 match 其他非 text 字段匹配用 term

18、aggregations(执行聚合)

19、Mapping  映射

三、代码对应操作

1、构建DSL语句

  SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();//构建DSL语句

2、构建bool-query

 BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();

3、must -模糊匹配

 boolQuery.must(QueryBuilders.matchQuery("skuTitle",param.getKeyword()));

4、 bool-filter -按照三级分类id查询

 boolQuery.filter(QueryBuilders.termQuery("catalogId",param.getCatalog3Id()));

5、 排序

 sourceBuilder.sort(s[0], order);

6、分页

 sourceBuilder.from((param.getPageNum()-1)*EsConstant.PRODUCT_PAGESIZE);
        sourceBuilder.size(EsConstant.PRODUCT_PAGESIZE);

7、高亮

 sourceBuilder.highlighter(builder);

8、聚合分析

 sourceBuilder.aggregation(brand_agg);

四、dev tools

#?catalog3Id=225&keyword=华为&brandId=1&brand=2&attrs=1_5.56以上&attrs=2_白色:蓝色
#must   匹配出来的数据参与评分
#match  匹配    keyword=华   ——> 模糊匹配
#term   精确匹配  catalog3Id=225   --->=值匹配
#terms  精确匹配多个值   brandId=1&brand=2   --->= + and 值匹配
#filter 匹配出来的数据不参与评分 --->过滤
#nested 匹配嵌入式的参数字段(字段被设置为 "type" : "nested",)
#bool   组合一个多查询
#sort   匹配排序   ---->order by 排序匹配
#range  区间检索  gte:大于   lte:小于   ----->   >  <  匹配
#from   从某页开始 #size   查询多少个    (做分页)  ----->分页匹配
#highlight  做高亮   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

追逐路上的小人物

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值