背景

  我本来是想把我的写的es的平时总结dsl发出来的,但是我发现只搞那个意义大不.干脆多写点吧.

索引的结构化和非结构

  我们经常用数据库,当然会经常用到索引.

  然后从索引的维度去分析,系统分为结构化索引和非结构化索引.

  结构化索引,就是可以预设索引,比如id,可以预见的. 维护方便,性能高.

  非结构化索引,就是数据进来之前,我可能都不知道要进来什么. 然后数据进来后,我要进行分析. 比如,挨个扫描节点,看是否包含,比较墨迹. 或者将非结构化的数据的一部分信息提取出来,使其变得有结构,感觉很像抽象,有了结构,那就好搞很多.

elasticSearch简述

elasticSearch又称es,是一种分布式的搜索引擎工具,之前我们比较熟悉的应该是luence,然后再往前推进,就是solr;

三者的关系

luence是一个信息检索工具包,类似SDK,提供了全面的api,也可以做高级查询.但是作为一个搜索引擎来讲的话,并不太完整,因为缺乏了一些获取数据,解析,分词等功能.而且,用起来较为复杂.所以,我们可能更需要完整而且更简洁的搜索引用服务. 简而言之,很全面,很基础,用起来麻烦.

solr是基于luence,是对lucen的进一步封装,补全.提供了对应的api供我们调用,很容易就能实现检索服务,而且更为完整,可以根据配置文件解析数据等.但是因为是更高一层的封装,所以luence很多新特性不能及时透传,也就是luence能查,但是solr查不了.简而言之,solr是独立的,面向企业级的,搜索引擎.

es也是基于luence,并提供了更高层次的封装的搜索引擎.特点对索引进行分片,将一个大的索引拆分多个,分布到不同节点上,降低服务器压力,构成分布式搜索,从大大提升搜索效率.是一款近乎实时分析的搜索引擎,非常强力.而且采用了restful风格,更易于上手.简而言之,分片机制,分布式搜索,实时,很强力.

实际开发中的dsl语句

记得装了es之后,再装个kibana,然后再kibana上跑这些程序.

#处理下hyd_test的全文导入
DELETE hyd_test GET /hyd_test/_doc/_search

#批量更新
  POST /hyd_test/_doc/_bulk
  {"update":{"_id":1}}
  {"doc":{"reference_law":"《中华人民共和国民事诉讼法》第二百一十条 、第二百三十三条 、第二百零七条 、第一百七十条","trial_court":"最高人民法院","assistan t_judge":"齐召财","clerk":"齐召财","lawyer":"","law_firm":"","legal_basis":"","created_time":"2020-09-02 15:32:00","created_by":"admi  n","updated_time":"2020-09-02 15:34:12","updated_by":"","is_delete":0},"doc_as_upsert":true}

#批量写入
POST test_demo/_doc/_bulk
{"create":{"_id":1}}
{"case_name":"你好你好 ,嗨美女","count":18}
{"create":{"_id":2}}
{"case_name":"好的好的,大美女","count":19} #查询结构
GET /test_demo/_mapping #查询分词_analyze
POST /test_demo/_analyze
{
"analyzer": "ik_max_word",
"text": "你好你好 ,嗨美女"
} #match查询
GET /test_demo/_doc/_search
{
"query": {
"match": {
"case_name": {
"query": "是个美女"
}
}
}
} #精确匹配term
GET /test_demo/_doc/_search
{
"query": {
"term": {
"case_name": {
"value": "是个美女"
}
}
}
} #and 查询
GET hyd_test/_search
{
"from": 0,
"size": 10,
"query": {
"bool": {
"must": [
{
"match": {
"trial_year": "2018"
}
},
{
"match": {
"case_cause_id": "100"
}
}
]
}
}
}
#统计
GET hyd_test/_search
{
"size": 0,
"query": {
"match": {
"case_cause_name": "相邻通行纠纷"
}
},
"aggs": { "document_type_name":{
"terms": {
"field": "document_type_name",
"size": 10
}
}
}
} #清空所有数据
POST authoritative_case/_delete_by_query
{
"query":{
"match_all":{ }
}
} #高亮. 注意, 高亮必须match也要带上同样的字段.
GET hyd_test/_search
{ "query": {
"match": {
"case_cause_name": "相邻通行纠纷"
}
},
"highlight": {
"fields": {
"case_cause_name":{ }
}
} } #高亮,加颜色,并且不要求 number_of_fragments 分段. 默认为5 ,就是划分为5断.
GET hyd_test/_search
{
"query": {
"bool": {
"must": [
{
"query_string": {
"query": "一审"
}
},
{
"match": {
"id": {
"query": 1
}
}
}
]
}
},
"highlight": {
"pre_tags": [
"<span style='color:red'>"
],
"post_tags": [
"</span>"
],
"fragment_size": 1000,
"number_of_fragments": 0,
"require_field_match": false,
"fields": {
"*": {}
}
}
} #id为1的全文高亮
GET hyd_test/_search
{
"query": {
"bool": {
"must": [
{
"query_string": {
"query": "民事"
}
},
{
"query_string": {
"query": "理由"
}
},
{
"match": {
"id": "1"
}
}
]
}
},
"highlight": {
"require_field_match": "false",
"fields": {
"*": {}
}
}
} #查询嵌套对象: path里面是对象visible_user query最里面是实际字段visible_user.visible_user_id
GET gzmx_clue/_search
{
"from": 0,
"size": 10,
"query": {
"bool": {
"must": [
{
"nested": {
"path": "visible_user",
"query": {
"terms": {
"visible_user.visible_user_id": [
185
]
}
}
}
}
]
}
}
} #复杂查询 先取交集,再取并集. should(must,must) .
GET gzmx_clue/_search
{
"query": {
"bool": {
"should": [
{
"bool": {
"must": {
"match": {
"procuratorate_code": "2"
}
},
"must_not": {
"match": {
"source": "9"
}
}
}
},
{
"bool": {
"must": [
{
"match": {
"source": "9"
}
},
{
"nested": {
"path": "visible_user",
"query": {
"terms": {
"visible_user.visible_user_id": [
186
]
}
}
}
},
{
"match": {
"procuratorate_code": "2"
}
}
]
}
}
]
}
}
} #must和shoule交集使用会导致should不起效. 所以, 尽量把should放在must里面.
{
"from": 0,
"size": 10,
"query": {
"bool": {
"must": [
{
"terms": {
"clue_feature": [
"0"
],
"boost": 1
}
},
{
"bool": {
"should": [
{
"bool": {
"must": [
{
"match": {
"procuratorate_code": {
"query": 2,
"operator": "OR",
"prefix_length": 0,
"max_expansions": 50,
"fuzzy_transpositions": true,
"lenient": false,
"zero_terms_query": "NONE",
"auto_generate_synonyms_phrase_query": true,
"boost": 1
}
}
}
],
"must_not": [
{
"match": {
"source": {
"query": 9,
"operator": "OR",
"prefix_length": 0,
"max_expansions": 50,
"fuzzy_transpositions": true,
"lenient": false,
"zero_terms_query": "NONE",
"auto_generate_synonyms_phrase_query": true,
"boost": 1
}
}
}
],
"adjust_pure_negative": true,
"boost": 1
}
},
{
"bool": {
"must": [
{
"nested": {
"query": {
"terms": {
"visible_user.visible_user_id": [
432
],
"boost": 1
}
},
"path": "visible_user",
"ignore_unmapped": false,
"score_mode": "none",
"boost": 1
}
},
{
"match": {
"procuratorate_code": {
"query": 2,
"operator": "OR",
"prefix_length": 0,
"max_expansions": 50,
"fuzzy_transpositions": true,
"lenient": false,
"zero_terms_query": "NONE",
"auto_generate_synonyms_phrase_query": true,
"boost": 1
}
}
},
{
"match": {
"source": {
"query": 9,
"operator": "OR",
"prefix_length": 0,
"max_expansions": 50,
"fuzzy_transpositions": true,
"lenient": false,
"zero_terms_query": "NONE",
"auto_generate_synonyms_phrase_query": true,
"boost": 1
}
}
}
],
"adjust_pure_negative": true,
"boost": 1
}
}
],
"adjust_pure_negative": true,
"boost": 1
}
}
],
"adjust_pure_negative": true,
"boost": 1
}
},
"sort": [
{
"created_time": {
"order": "desc"
}
},
{
"id": {
"order": "desc"
}
}
],
"track_total_hits": 2147483647
}
#查询所有数量
GET gzmx_clue/_search
{
"track_total_hits":true,
"query":{
"match_all":{}
}
}

elasticsearch相关概念及常用操作汇总的更多相关文章

  1. Kotlin——初级篇(八):关于字符串(String)常用操作汇总

    在前面讲解Kotlin数据类型的时候,提到了字符串类型,当然关于其定义在前面的章节中已经讲解过了.对Kotlin中的数据类型不清楚的同学.请参考Kotlin--初级篇(三):数据类型详解这篇文章. 在 ...

  2. Kotlin——关于字符串(String)常用操作汇总

    在前面讲解Kotlin数据类型的时候,提到了字符串类型,当然关于其定义在前面的章节中已经讲解过了.对Kotlin中的数据类型不清楚的同学.请参考Kotlin——初级篇(三):数据类型详解这篇文章. 在 ...

  3. ElasticSearch 集群基本概念及常用操作汇总(建议收藏)

    内容来源于本人的印象笔记,简单汇总后发布到博客上,供大家需要时参考使用. 原创声明:作者:Arnold.zhao 博客园地址:https://www.cnblogs.com/zh94 目录: Elas ...

  4. Git常用操作汇总(转)

    如果一个文件被删除了,可以使用切换版本号进行恢复.恢复方法: 先确定需要恢复的文件要恢复成哪一个历史版本(commit),假设那个版本号是: commit_id,那么 git checkout com ...

  5. Elasticsearch(Transport Client)常用操作

    这里描述操作elasticsearch采用TransportClient这种方式,官方明确表示在ES 7.0版本中将弃用TransportClient客户端,且在8.0版本中完全移除它. 记录一些常用 ...

  6. ElasticSearch之映射常用操作

    本文案例操作,建议先阅读我之前的文章<ElasticSearch之安装及基本操作API> Mapping (映射)类似关系型数据库中的表的结构定义.我们将数据以 JSON 格式存入到 El ...

  7. ListControl常用操作汇总

    本文根据本人在项目中的应用,来谈谈CListCtrl的部分用法及技巧.当初学习时,查了很多资料,零零碎碎的作了些记录,现在主要是来做个总结,方便以后查阅.主要包括以下十三点内容:基本操作.获取选中行的 ...

  8. ssh下常用操作汇总(good)

    1. 安装git,从程序目录打开 "Git Bash"  2. 键入命令:ssh-keygen -t rsa -C "email@email.com"   &q ...

  9. ElasticSearch相关概念与客户端操作

    一.Elasticsearch概述 Elasticsearch是面向文档(document oriented)的,这意味着它可以存储整个对象或文档(document).然而它不仅仅是存储,还会索引(i ...

  10. Linux下常用操作汇总

    查看linux操作系统位数 (1) 终端输入: file /sbin/init 如 显示: /sbin/init: ELF 32-bit LSB executable, Intel 80386, ve ...

随机推荐

  1. 【转载】解决CHM帮助文件无法从网络共享位置上直接打开的问题的方法

    近日在内网共享了些书籍,但发现其中的.chm文件竟然无法正常打开,而文件百分百是正常的..症状:无法从网上邻居的共享位置上直接打开.chm文件.从网络共享位置上打开.chm文件,显示为空白或运行不正常 ...

  2. (一)elasticsearch 编译和启动

    1.准备 先从github官网上clone elasticsearch源码到本地,选择合适的分支.笔者这里选用的是7.4.0(与笔者工作环境使用的分支一致),此版本编译需要jdk11. 2.编译 Re ...

  3. 【分布式技术专题】「LVS负载均衡」全面透析Web基础架构负载均衡LVS机制的原理分析指南

    前提概要 在大规模互联网应用中,负载均衡设备是必不可少的组成部分,源于互联网应用的高并 发和大流量的冲击压力场景下,通常会在服务端部署多个无状态的应用服务器和若干有状态的存储服务器(数据库.缓存等等) ...

  4. BBS项目 未完待续

    项目开发基本流程 1.需求分析 2.架构设计 3.分组开发 4.提交测试 5.交付上线 创建项目配置 环境配置 TEMPLATES = [ { 'BACKEND': 'django.template. ...

  5. 云间玉兔,自出机抒,从零开始制作Web插件网页特效小兔子组件(小挂件widget),基于原生CSS/NPM

    著意登楼瞻玉兔,何人张幕遮银阙?又到了一年一度的网页小挂件环节,以往我们都是集成别人开源的组件,但所谓熟读唐诗三百首,不会做诗也会吟,熟读了别人的东西,做几首打油诗也是可以的,但若不能自出机抒,却也成 ...

  6. IOS14广告追踪

    今天回顾一个权限问题 1.工程中先导入一下两个框架 #import <AppTrackingTransparency/AppTrackingTransparency.h> #import  ...

  7. MAC中Flutter下载和安装

    Flutter官网 https://flutter.dev/docs/development/tools/sdk/releases?tab=macos   一.终端下配置系统环境变量和镜像 我的mac ...

  8. STM32 的学习方法

    前言 学习知识要掌握有效的学习方法,学习技术也是一样,本篇分享关于我学习 STM32 后总结的学习方法. 推荐的学习方法 系统学习 在网上购买一款开发板,使用开发板+开发板配套视频教程+开发板配套源码 ...

  9. 通过rpm安装postgresql-9.6无法远程连接的问题

    1.停止postgresql服务 service postgresql-9.6 stop 2.修改postgresql.conf vi /var/lib/pgsql/9.6/data/postgres ...

  10. 看不懂打我系列------图文并茂基于CentOS Linux release 7.8.2003 Core安装并Docker化你的Node.js应用

    @图文并茂基于CentOS Linux release 7.8.2003 Core安装并Docker化你的Node.js应用 简体中文 | English 说明 本文介绍如何在CentOS Linux ...