elasticsearch7使用指导

目录结构:

一、es概述

二、es安装/head插件安装/kibana安装

三、es核心概念

四、IK分词器

五、RestFul操作

六、CRUD(增删改查)

七、Springboot集成es

---------------------------------------分割线:正文--------------------------------------------------------

一、es概述

1、Doug Cutting

(1)创建了Lucene,(es与solr基于Lucene), 开源且功能为一套信息检索工具包,jar包

(2)实现了NDFS(分布式文件存储系统)基于Google的GFS系统

(3)将NDFS与MapReduce升级改造,重新命名为Hadoop,hadoop之父

(4)基于Google的BigTable,实现了HBase

2、ElasticSearch概述 

(1)概念:开源的分布式全文检索引擎

(2)优点:近乎实时存储、检索数据,扩展性好,可扩展上百台服务器,处理PB级别的数据,基于Lucene核心,通过RestFul API使全文搜索变得简单

(3)谁在使用:维基百科,搜狐新闻,Github等等

3、ES与solr的区别

(1)ES是RestFul API,而Solr是WebService API

(2)单纯已有的数据搜索,solr更快

(3)建立索引后的数据,Solr会产生io阻塞,es有明显的优势

(4)数据量增加,Solr的搜索效率会变低,es不受影响

 

二、es安装/head插件安装/kibana安装

 声明:安装条件,JDK1.8+

 1、es下载:

(1)es客户端:https://www.elastic.co/cn/downloads/elasticsearch

(2)ik分词器:https://github.com/medcl/elasticsearch-analysis-ik/releases

(3)kibana:https://www.elastic.co/cn/downloads/kibana

(4)head插件:https://github.com/mobz/elasticsearch-head/archive/master.zip

(5)chrome-es插件:https://github.com/mobz/elasticsearch-head/blob/master/crx/es-head.crx

2、es客户端windows安装

 (1)安装步骤

elasticsearch-7.12.1-windows-x86_64.zip 解压即可。

(2)相关文件

bin:启动文件

config:配置文件

- - log4j2.properties:日志配置

- - elasticsearch.yml:es配置文件,默认9200端口

- - jvm.options:java虚拟机相关配置

lib:相关jar包

modules:功能模块

plugins:插件!如ik分词器等

logs:日志

(3)启动es

双击bin目录下elasticsearch.bat

 启动成功,默认访问9200端口

 浏览器访问:http://127.0.0.1:9200/ 返回相关配置信息

3、安装可视化界面:es head的插件

(1)解压缩:elasticsearch-head-master.zip

(2)安装node.js:https://nodejs.org/en/

cmd:node -v验证安装成功

(3)安装cnpm:

cmd安装淘宝镜像:npm install -g cnpm -registry=https://registry.npm.taobao.org

 cnpm -v验证安装成功

(4)安装依赖:

进入D:\elasticsearch\elasticsearch-head-master目录;执行cnpm install;

 (5)运行npm run start启动npm

 (6)浏览器访问:http://localhost:9100

由于跨域无法访问:

 (7)配置可跨域

配置conf下elasticsearch.yml新增配置

http.cors.enabled: true
http.cors.allow-origin: "*"

重启es服务,再次访问,集群连接正常

4、Kibana安装

(1)Kibana安装的版本要与es版本对应:

(2)启动测试:运行bin下kibana.bat并测试对应的接口

(3)开发工具 http://localhost:5601

 

 

 (4)配置中文:config下kibana.yml,新增配置并重启服务

i18n.locale: "zh-CN"

 

 

三、es核心概念

 1、elasticsearch是面向文档的(一切都是json),与关系型数据库的对比

RelationDB  -> Elasticsearch

数据库(database) -> 索引(indices)

表(tables) -> types(慢慢会被弃用)

行(rows) -> documents

字段(columns) -> fields

2、es物理设计:

elasticsearch在后台把每个索引划分成多个分片,每个分片在集群中的不同的服务间迁移。

默认的集群名就是elasticsearch

3、逻辑设计:

(1)文档:最小单位,即一条条数据

(2)类型:text、date等类型

(3)索引:数据库

4、es字段类型:

text:会被分词器解析

keyword:不会被分词器解析

 

四、IK分词器

1、分词:

把一段中文或别的划分为一个个关键字,我们在搜索时候会把自己的信息进行分词,默认的中文分词器将每个字看成一个词,我们需安装使用中文分词器ik来解决

2、安装ik分词器:

(1)下载:https://github.com/medcl/elasticsearch-analysis-ik/releases

(2)安装:elasticsearch-analysis-ik-7.12.1.zip放入elasticsearch-7.12.1\plugins目录下解压缩即可使用:

 (3)重启观察ES,加载插件成功

[2021-05-12T23:00:05,420][INFO ][o.e.p.PluginsService     ] [DESKTOP-GIEVO4Q] loaded plugin [analysis-ik]
[2021-05-12T23:00:05,615][INFO ][o.e.e.NodeEnvironment    ] [DESKTOP-GIEVO4Q] using [1] data paths, mounts [[杞欢 (D:)]], net usable_space [179.3gb], net total_space [300.7gb], types [NTFS]

(4)验证通过:elasticsearch-plugin list

D:\elasticsearch\elasticsearch-7.12.1\bin>elasticsearch-plugin list
"warning: usage of JAVA_HOME is deprecated, use ES_JAVA_HOME"
Future versions of Elasticsearch will require Java 11; your Java version from [C:\Program Files\Java\jdk1.8.0_271\jre] does not meet this requirement. Consider switching to a distribution of Elasticsearch with a bundled JDK. If you are already using a distribution with a bundled JDK, ensure the JAVA_HOME environment variable is not set.
ik

3、使用kibana进行测试

启动kibana进入控制台进行测试

查看不同的分词器效果

(1)ik_smart

GET _analyze
{"analyzer": "ik_smart","text":"软件工程师"
}

查看运行结果:

{"tokens" : [{"token" : "软件","start_offset" : 0,"end_offset" : 2,"type" : "CN_WORD","position" : 0},{"token" : "工程师","start_offset" : 2,"end_offset" : 5,"type" : "CN_WORD","position" : 1}]
}

(2)ik_max_word

GET _analyze
{"analyzer": "ik_max_word","text":"软件工程师"
}

查看运行结果:

{"tokens" : [{"token" : "软件工程","start_offset" : 0,"end_offset" : 4,"type" : "CN_WORD","position" : 0},{"token" : "软件","start_offset" : 0,"end_offset" : 2,"type" : "CN_WORD","position" : 1},{"token" : "工程师","start_offset" : 2,"end_offset" : 5,"type" : "CN_WORD","position" : 2},{"token" : "工程","start_offset" : 2,"end_offset" : 4,"type" : "CN_WORD","position" : 3},{"token" : "师","start_offset" : 4,"end_offset" : 5,"type" : "CN_CHAR","position" : 4}]
}

4、将加入自己需要的词加到分词器的字典中

打开:elasticsearch-7.12.1\plugins\ik\config\IKAnalyzer.cfg.xml,配置<entry key="ext_dict"></entry>内添加字段映射

 (1)配置前

GET _analyze
{"analyzer": "ik_max_word","text":"我的妈"
}

查看运行结果:

{"tokens" : [{"token" : "我","start_offset" : 0,"end_offset" : 1,"type" : "CN_CHAR","position" : 0},{"token" : "的","start_offset" : 1,"end_offset" : 2,"type" : "CN_CHAR","position" : 1},{"token" : "妈","start_offset" : 2,"end_offset" : 3,"type" : "CN_CHAR","position" : 2}]
}

(2)配置

<entry key="ext_dict">my.dic</entry>

同目录下新增my.dic -> 我的妈

(3)配置后重启es,控制台

{"tokens" : [{"token" : "我的妈","start_offset" : 0,"end_offset" : 3,"type" : "CN_WORD","position" : 0}]
}

查看运行结果:

{"tokens" : [{"token" : "我的妈","start_offset" : 0,"end_offset" : 3,"type" : "CN_WORD","position" : 0}]
}

 

五、RestFul索引基本操作

 1、基本Rest命令:

PUT        |  localhost:9200/索引名称/类型名称/文档id                |   创建文档(指定文档id)

POST     |  localhost:9200/索引名称/类型名称                          |    创建文档(随机文档id)

POST     |  localhost:9200/索引名称/类型名称/文档id/_update |   修改文档

DELETE |  localhost:9200/索引名称/类型名称/文档id               |   删除文档

GET        |  localhost:9200/索引名称/类型名称/文档id               |   查询文档通过文档id

POST     |  localhost:9200/索引名称/类型名称/文档id/_search  |   查询所有文档

2、基础测试-创建索引

创建一个索引:PUT /索引名/~类型名~/文档id

PUT /test1/type1/1
{"name":"小白学es","age":3
}

查看响应,完成自动增加了索引,类似数据库

#! [types removal] Specifying types in document index requests is deprecated, use the typeless endpoints instead (/{index}/_doc/{id}, /{index}/_doc, or /{index}/_create/{id}).
{"_index" : "test1","_type" : "type1","_id" : "1","_version" : 1,"result" : "created","_shards" : {"total" : 2,"successful" : 1,"failed" : 0},"_seq_no" : 0,"_primary_term" : 1
}

3、基本数据类型

(1)字符串类型:text、keyword

(2)数值类型:long、integer、short、byte、double、half float、scaled、float

(3)日期类型:date

(4)te布尔类型:boolean

(5)二进制类型:binary

4、基础测试-创建并指定索引类型

PUT /test2
{"mappings":{"properties": {"name":{"type":"text"},"age":{"type":"long"},"birthday":{"type":"date"}}}
}

查看运行结果

{"acknowledged" : true,"shards_acknowledged" : true,"index" : "test2"
}

5、 基础测试-创建/查看默认信息

(1)创建默认索引即文档

PUT /test3/_doc/1
{"name":"小白学es","age":18,"bithday":"1997-07-07"
}

查看运行结果

{"_index" : "test3","_type" : "_doc","_id" : "1","_version" : 1,"result" : "created","_shards" : {"total" : 2,"successful" : 1,"failed" : 0},"_seq_no" : 0,"_primary_term" : 1
}

插件查看

 (2)查看索引,默认配置字段类型!

GET test3

运行结果:

{"test3" : {"aliases" : { },"mappings" : {"properties" : {"age" : {"type" : "long"},"bithday" : {"type" : "date"},"name" : {"type" : "text","fields" : {"keyword" : {"type" : "keyword","ignore_above" : 256}}}}},"settings" : {"index" : {"routing" : {"allocation" : {"include" : {"_tier_preference" : "data_content"}}},"number_of_shards" : "1","provided_name" : "test3","creation_date" : "1621064937104","number_of_replicas" : "1","uuid" : "f_-oPx65RwOk846CysvHRQ","version" : {"created" : "7120199"}}}}
}

6、扩展,查看集群/索引信息:

查看集群状态:

GET _cat/health

运行结果:

1621065190 07:53:10 elasticsearch yellow 1 1 9 9 0 0 2 0 - 81.8%

查看索引版本信息等:

GET _cat/indices?v

运行结果:

health status index                           uuid                   pri rep docs.count docs.deleted store.size pri.store.size
green  open   .kibana_7.12.1_001              aGaAAOZTSQyk_0ZU_lOXsg   1   0         54           23      4.2mb          4.2mb
yellow open   test2                           3f9X5bcAQXKciY56Il5nfA   1   1          0            0       208b           208b
yellow open   test3                           f_-oPx65RwOk846CysvHRQ   1   1          1            0      4.2kb          4.2kb
green  open   .apm-custom-link                ZyIwiavFSJSFTbh2cMd8Tg   1   0          0            0       208b           208b
green  open   .apm-agent-configuration        FD1qwkXwTTaCT6orvViPRg   1   0          0            0       208b           208b
green  open   .kibana_task_manager_7.12.1_001 MIUHf-m7S_e8XrjZMduTpA   1   0          9          272    286.7kb        286.7kb
green  open   .kibana-event-log-7.12.1-000001 qPBR8ea4Th24CnhfxKa3Sg   1   0          6            0     32.6kb         32.6kb
green  open   .tasks                          uwcYsws9QkqK1CXKQiNI0Q   1   0         10            0       50kb           50kb

7、基础测试-修改索引/文档

(1)直接覆盖:PUT

PUT /test3/_doc/1
{"name":"小白学es2","age":18,"bithday":"1997-07-07"
}

运行结果:version+1,result为updated

{"_index" : "test3","_type" : "_doc","_id" : "1","_version" : 2,"result" : "updated","_shards" : {"total" : 2,"successful" : 1,"failed" : 0},"_seq_no" : 1,"_primary_term" : 1
}

插件查看结果:

 (2)update更新:POST

POST /test3/_doc/1/_update
{"doc":{"name":"小白学es3"}
}

运行结果:version+1,result为updated

#! [types removal] Specifying types in document update requests is deprecated, use the endpoint /{index}/_update/{id} instead.
{"_index" : "test3","_type" : "_doc","_id" : "1","_version" : 3,"result" : "updated","_shards" : {"total" : 2,"successful" : 1,"failed" : 0},"_seq_no" : 2,"_primary_term" : 1
}

插件查看结果:

8、基础测试-删除索引

(1)删除索引

DELETE test1

查看运行结果:

{"acknowledged" : true
}

(2)删除索引中文档

DELETE test3/_doc/1

查看运行结果:

{"_index" : "test3","_type" : "_doc","_id" : "1","_version" : 4,"result" : "deleted","_shards" : {"total" : 2,"successful" : 1,"failed" : 0},"_seq_no" : 3,"_primary_term" : 1
}

 

六、文档CRUD(增删改查)

1、添加数据:PUT

PUT /xiaobai/user/1
{"name":"小白","age":30,"desc":"一顿操作猛如虎,一看工资2500","tags":["技术宅","直男"]
}

查看运行结果:

#! [types removal] Specifying types in document index requests is deprecated, use the typeless endpoints instead (/{index}/_doc/{id}, /{index}/_doc, or /{index}/_create/{id}).
{"_index" : "xiaobai","_type" : "user","_id" : "1","_version" : 1,"result" : "created","_shards" : {"total" : 2,"successful" : 1,"failed" : 0},"_seq_no" : 0,"_primary_term" : 1
}

插件查看:

同样的方法添加一些数据:

2、获取数据:GET

GET xiaobai/user/1

查看运行结果:

#! [types removal] Specifying types in document get requests is deprecated, use the /{index}/_doc/{id} endpoint instead.
{"_index" : "xiaobai","_type" : "user","_id" : "1","_version" : 1,"_seq_no" : 0,"_primary_term" : 1,"found" : true,"_source" : {"name" : "小白","age" : "30","desc" : "一顿操作猛如虎,一看工资2500","tags" : ["技术宅","直男"]}
}

3、更新数据:PUT/POST

(1)PUT修改:全量字段更新

1号数据name:小白 -> 白神

PUT /xiaobai/user/1
{"name":"白神","age":"30","desc":"一顿操作猛如虎,一看工资2500","tags":["技术宅","直男"]
}

查看运行结果:

#! [types removal] Specifying types in document index requests is deprecated, use the typeless endpoints instead (/{index}/_doc/{id}, /{index}/_doc, or /{index}/_create/{id}).
{"_index" : "xiaobai","_type" : "user","_id" : "1","_version" : 2,"result" : "updated","_shards" : {"total" : 2,"successful" : 1,"failed" : 0},"_seq_no" : 5,"_primary_term" : 2
}

(2)POST _update:指定字段更新(推荐使用)

POST /xiaobai/user/1/_update
{"doc":{"name":"小白java"}
}

查看运行结果:

#! [types removal] Specifying types in document update requests is deprecated, use the endpoint /{index}/_update/{id} instead.
{"_index" : "xiaobai","_type" : "user","_id" : "1","_version" : 5,"result" : "updated","_shards" : {"total" : 2,"successful" : 1,"failed" : 0},"_seq_no" : 8,"_primary_term" : 2
}

4、简单的搜索:GET _searcher

text类型可以根据字段分词搜索,keyword关键词不会处理分词器

GET /xiaobai/user/_search?q=name:小白

查看运行结果:

#! [types removal] Specifying types in search requests is deprecated.
{"took" : 32,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 3,"relation" : "eq"},"max_score" : 1.9252907,"hits" : [{"_index" : "xiaobai","_type" : "user","_id" : "1","_score" : 1.9252907,"_source" : {"name" : "小白","age" : "30","desc" : "一顿操作猛如虎,一看工资2500","tags" : ["技术宅","直男"]}},{"_index" : "xiaobai","_type" : "user","_id" : "2","_score" : 0.53899646,"_source" : {"name" : "小黑","age" : "32","desc" : "腹黑男猪脚","tags" : ["旅游","渣男","游戏宅"]}},{"_index" : "xiaobai","_type" : "user","_id" : "5","_score" : 0.53899646,"_source" : {"name" : "小王","age" : "32","desc" : "社会性死亡","tags" : ["技术宅","暖男","中年危机"]}}]}
}

5、复杂操作搜索: _searcher match - 分词模糊匹配

{"query":{"match": {"name": "钻石王老五"}}
}

查看运行结果:

{"took": 2,"timed_out": false,"_shards": {"total": 1,"successful": 1,"skipped": 0,"failed": 0},"hits": {"total": {"value": 4,"relation": "eq"},"max_score": 3.0311832,"hits": [{"_index": "xiaobai","_type": "user","_id": "6","_score": 3.0311832,"_source": {"name": "钻石王老五","age": "32","desc": "社会性死亡","tags": ["技术宅","暖男","中年危机"]}},{"_index": "xiaobai","_type": "user","_id": "4","_score": 1.9277248,"_source": {"name": "王五","age": "30","desc": "正宗青子","tags": ["青年","吃货","旅游","胖子"]}},{"_index": "xiaobai","_type": "user","_id": "7","_score": 1.6832076,"_source": {"name": "钻石李老四","age": "32","desc": "社会性死亡","tags": ["技术宅","暖男","中年危机"]}},{"_index": "xiaobai","_type": "user","_id": "5","_score": 1.2623059,"_source": {"name": "钻石123","age": "32","desc": "社会性死亡","tags": ["技术宅","暖男","中年危机"]}}]}
}

6、复杂操作搜索: _searcher match_phrase - 完整模糊匹配

GET /xiaobai/user/_search
{"query":{"match_phrase": {"name": "钻石王老五"}}
}

查看运行结果:

#! [types removal] Specifying types in search requests is deprecated.
{"took" : 0,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 1,"relation" : "eq"},"max_score" : 3.0311837,"hits" : [{"_index" : "xiaobai","_type" : "user","_id" : "6","_score" : 3.0311837,"_source" : {"name" : "钻石王老五","age" : "32","desc" : "社会性死亡","tags" : ["技术宅","暖男","中年危机"]}}]}
}

7、复杂操作搜索: _searcher term - 完成精确匹配

GET xiaobai/user/_search
{"query":{"term": {"name.keyword": "钻石王老五"}}
}

查看运行结果:

#! [types removal] Specifying types in search requests is deprecated.
{"took" : 0,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 1,"relation" : "eq"},"max_score" : 1.2039728,"hits" : [{"_index" : "xiaobai","_type" : "user","_id" : "3","_score" : 1.2039728,"_source" : {"name" : "钻石王老五","age" : "19","desc" : "社会性死亡","tags" : ["技术宅","暖男"]}}]}
}

8、复杂操作搜索: _searcher _source - 过滤展示结果

GET /xiaobai/user/_search
{"query":{"match_phrase": {"name": "钻石王老五"}},"_source":["name","desc"]
}

查看运行结果:

#! [types removal] Specifying types in search requests is deprecated.
{"took" : 11,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 1,"relation" : "eq"},"max_score" : 3.0311837,"hits" : [{"_index" : "xiaobai","_type" : "user","_id" : "6","_score" : 3.0311837,"_source" : {"name" : "钻石王老五","desc" : "社会性死亡"}}]}
}

9、复杂操作搜索: _searcher sort - 排序(desc/asc)

GET xiaobai/user/_search
{"query":{"match_phrase": {"name": "钻石"}},"sort":[{"age":{"order":"desc"}}]
}

查看运行结果:

#! [types removal] Specifying types in search requests is deprecated.
{"took" : 1,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 3,"relation" : "eq"},"max_score" : null,"hits" : [{"_index" : "xiaobai","_type" : "user","_id" : "2","_score" : null,"_source" : {"name" : "钻石李老四","age" : "32","desc" : "社会性死亡","tags" : ["技术宅","暖男","中年危机"]},"sort" : [32]},{"_index" : "xiaobai","_type" : "user","_id" : "4","_score" : null,"_source" : {"name" : "钻石123","age" : "28","desc" : "废物一个","tags" : ["技术宅"]},"sort" : [28]},{"_index" : "xiaobai","_type" : "user","_id" : "3","_score" : null,"_source" : {"name" : "钻石王老五","age" : "19","desc" : "社会性死亡","tags" : ["技术宅","暖男"]},"sort" : [19]}]}
}

10、复杂操作搜索: _searcher from size - 分页查询

GET xiaobai/user/_search
{"query":{"match_phrase": {"name": "钻石"}},"from":0,"size":2
}

查看运行结果:

#! [types removal] Specifying types in search requests is deprecated.
{"took" : 0,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 3,"relation" : "eq"},"max_score" : 0.77691567,"hits" : [{"_index" : "xiaobai","_type" : "user","_id" : "4","_score" : 0.77691567,"_source" : {"name" : "钻石123","age" : "28","desc" : "废物一个","tags" : ["技术宅"]}},{"_index" : "xiaobai","_type" : "user","_id" : "2","_score" : 0.62774795,"_source" : {"name" : "钻石李老四","age" : "32","desc" : "社会性死亡","tags" : ["技术宅","暖男","中年危机"]}}]}
}

11、复杂操作搜索: _searcher bool - 联合查询 -must - 所有条件均符合

GET xiaobai/user/_search
{"query":{"bool": {"must":[{"match":{"name":"钻石王老五"}},{"match":{"age":28}}]}}
}

查看运行结果:

#! [types removal] Specifying types in search requests is deprecated.
{"took" : 1,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 1,"relation" : "eq"},"max_score" : 1.7769157,"hits" : [{"_index" : "xiaobai","_type" : "user","_id" : "4","_score" : 1.7769157,"_source" : {"name" : "钻石123","age" : "28","desc" : "废物一个","tags" : ["技术宅"]}}]}
}

12、复杂操作搜索:_searcher bool - 联合查询 - should - 满足任意一个条件

GET xiaobai/user/_search
{"query":{"bool": {"should":[{"match":{"name":"小白"}},{"match":{"age":28}}]}}
}

查看运行结果:

#! [types removal] Specifying types in search requests is deprecated.
{"took" : 1,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 2,"relation" : "eq"},"max_score" : 2.9761126,"hits" : [{"_index" : "xiaobai","_type" : "user","_id" : "1","_score" : 2.9761126,"_source" : {"name" : "小白","age" : 30,"desc" : "一顿操作猛如虎,一看工资2500","tags" : ["技术宅","直男"]}},{"_index" : "xiaobai","_type" : "user","_id" : "4","_score" : 1.0,"_source" : {"name" : "钻石123","age" : "28","desc" : "废物一个","tags" : ["技术宅"]}}]}
}

13、复杂操作搜索:_searcher bool - 联合查询 - must_not - 不满足

GET xiaobai/user/_search
{"query":{"bool": {"must_not":[{"match":{"name":"小白"}},{"match":{"age":28}}]}}
}

查看运行结果:

#! [types removal] Specifying types in search requests is deprecated.
{"took" : 1,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 2,"relation" : "eq"},"max_score" : 0.0,"hits" : [{"_index" : "xiaobai","_type" : "user","_id" : "2","_score" : 0.0,"_source" : {"name" : "钻石李老四","age" : "32","desc" : "社会性死亡","tags" : ["技术宅","暖男","中年危机"]}},{"_index" : "xiaobai","_type" : "user","_id" : "3","_score" : 0.0,"_source" : {"name" : "钻石王老五","age" : "19","desc" : "社会性死亡","tags" : ["技术宅","暖男"]}}]}
}

14、复杂操作搜索:_searcher bool - 联合查询 - filter - 过滤

gt(>) gte(>=) lt(<) lte(<=)

GET xiaobai/user/_search
{"query":{"bool": {"must":[{"match":{"name":"钻石"}}],"filter": {"range": {"age": {"gte": 10,"lte": 30}}}
}

}
}

查看运行结果:

#! [types removal] Specifying types in search requests is deprecated.
{"took" : 1,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 2,"relation" : "eq"},"max_score" : 0.77691567,"hits" : [{"_index" : "xiaobai","_type" : "user","_id" : "4","_score" : 0.77691567,"_source" : {"name" : "钻石123","age" : "28","desc" : "废物一个","tags" : ["技术宅"]}},{"_index" : "xiaobai","_type" : "user","_id" : "3","_score" : 0.62774795,"_source" : {"name" : "钻石王老五","age" : "19","desc" : "社会性死亡","tags" : ["技术宅","暖男"]}}]}
}

15、复杂操作搜索:_searcher match - 匹配多个标签分词(空格隔开)

GET xiaobai/user/_search
{"query":{"match": {"tags":"男 技术宅"}}
}

查看运行结果:

#! [types removal] Specifying types in search requests is deprecated.
{"took" : 1,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 4,"relation" : "eq"},"max_score" : 0.6987428,"hits" : [{"_index" : "xiaobai","_type" : "user","_id" : "1","_score" : 0.6987428,"_source" : {"name" : "小白","age" : 30,"desc" : "一顿操作猛如虎,一看工资2500","tags" : ["技术宅","直男"]}},{"_index" : "xiaobai","_type" : "user","_id" : "3","_score" : 0.6987428,"_source" : {"name" : "钻石王老五","age" : "19","desc" : "社会性死亡","tags" : ["技术宅","暖男"]}},{"_index" : "xiaobai","_type" : "user","_id" : "2","_score" : 0.5337937,"_source" : {"name" : "钻石李老四","age" : "32","desc" : "社会性死亡","tags" : ["技术宅","暖男","中年危机"]}},{"_index" : "xiaobai","_type" : "user","_id" : "4","_score" : 0.38828292,

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/478346.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

开源开放 | 欢迎选修浙江大学《知识图谱》开放共享慕课

点击“阅读原文”或扫描图中二维码进入课程教学计划第一章知识图谱概论1.1 语言与知识1.2 知识图谱的起源1.3 知识图谱的价值1.4 知识图谱的技术内涵第二章知识图谱的表示2.1 什么是知识表示2.2 人工智能历史发展长河中的知识表示2.3 知识图谱的符号表示方法2.4 知识图谱的向量…

LeetCode 43. 字符串相乘(大数乘法)

文章目录1. 题目2. 小学竖式乘法2.1 普通版2.2 优化版1. 题目 给定两个以字符串形式表示的非负整数 num1 和 num2&#xff0c;返回 num1 和 num2 的乘积&#xff0c;它们的乘积也表示为字符串形式。 示例 1: 输入: num1 "2", num2 "3" 输出: "6&q…

旅游推荐系统的演进

度假业务在整个在线旅游市场中占据着非常重要的位置&#xff0c;如何做好做大这块蛋糕是行业内的焦点。与美食或酒店的用户兴趣点明确&#xff08;比如找某个确定的餐厅或者找某个目的地附近的酒店&#xff09;不同&#xff0c;旅游场景中的用户兴趣点&#xff08;比如周末去哪…

预训练卷不动,可以卷输入预处理啊!

文 | 德志编 | 小戏目前伴随着预训练预言模型的兴起&#xff0c;越来越多的 NLP 任务开始脱离对分词的依赖。通过 Fine-Tune Bert 这类预训练预言模型&#xff0c;能直接在下游任务上取得一个很好的结果。同时也有文章探讨中文分词在神经网络时代的必要性。对于分词任务本身也是…

检索式问答以及评论观点抽取+情感分析

3款开发者神器&#xff0c;快速搭建「检索、问答、情感分析」应用&#xff01; 人工智能与算法学习 于 2021-12-30 08:10:00 发布 26 收藏 文章标签&#xff1a; 百度 大数据 机器学习 人工智能 数据分析 原文链接&#xff1a;https://mp.weixin.qq.com/s?__bizMzIyOTkyOTE…

征稿 | Call for papers on Knowledge Graphs

Knowledge graph是Data Intelligence的核心主题和期刊特色之一。为持续展示这一领域的最新进展和前沿成果&#xff0c;Data Intelligence正在与国际学者一道策划两期Knowledge graph专辑。期待大家关注并积极投稿参与&#xff01;DI专辑Special Issue on Personal Health Knowl…

LeetCode 179. 最大数(自定义谓词函数--Lambda表达式--排序)

1. 题目 给定一组非负整数&#xff0c;重新排列它们的顺序使之组成一个最大的整数。 示例 1: 输入: [10,2] 输出: 210示例 2: 输入: [3,30,34,5,9] 输出: 9534330 说明: 输出结果可能非常大&#xff0c;所以你需要返回一个字符串而不是整数。来源&#xff1a;力扣&#xff08…

python实现requests访问接口,比如es接口

首先我们先引入requests模块 import requests一、发送请求 r requests.get(https://api.github.com/events) # GET请求 r requests.post(http://httpbin.org/post, data {key:value}) # POST请求 r requests.put(http://httpbin.org/put, data {key:value}) # PUT请求 r…

拿下字节offer,这些面试题命中率高达90%以上

昨天在知乎上刷到一个热门问题:程序员需要达到什么水平才能顺利拿到 20k 无压力&#xff1f;其中一个最热门的回答是&#xff1a;“其实&#xff0c;无论你是前端还是后端、想进大厂还是拿高薪&#xff0c;算法都一定很重要。”为什么&#xff0c;算法会如此重要&#xff1f;不…

HDFS NameNode重启优化

本文已发表于InfoQ&#xff0c;下面的版本又经过少量修订。 一、背景 在Hadoop集群整个生命周期里&#xff0c;由于调整参数、Patch、升级等多种场景需要频繁操作NameNode重启&#xff0c;不论采用何种架构&#xff0c;重启期间集群整体存在可用性和可靠性的风险&#xff0c;所…

LeetCode 4. 寻找两个有序数组的中位数(二分查找,难)

文章目录1. 题目2. 解题2.1 合并数组2.2 优化2.1解法&#xff0c;双指针2.3 二分法&#xff08;找第k个数&#xff09;2.4 切分法1. 题目 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。 请你找出这两个有序数组的中位数&#xff0c;并且要求算法的时间复杂度为O(log(mn…

论文浅尝 | 当Hearst还不够时:用分布模型来提升语料库中的上下义关系检测

笔记整理 | 潘晓梅&#xff0c;东南大学硕士&#xff0c;研究方向为知识图谱构建、自然语言处理。来源&#xff1a;EMNLP 2020.论文下载地址&#xff1a; https://www.aclweb.org/anthology/2020.emnlp-main.502.pdf项目源码地址&#xff1a; https://github.com/ccclyu/ComHyp…

LeetCode 887. 鸡蛋掉落(DP,难、不懂)

1. 题目 你将获得 K 个鸡蛋&#xff0c;并可以使用一栋从 1 到 N 共有 N 层楼的建筑。 每个蛋的功能都是一样的&#xff0c;如果一个蛋碎了&#xff0c;你就不能再把它掉下去。 你知道存在楼层 F &#xff0c;满足 0 < F < N 任何从高于 F 的楼层落下的鸡蛋都会碎&…

正确的LeetCode刷题姿势!

名师 带你刷爆LeetCode算法知识 讲解训练免费0元报名参加在讲到 AI 算法工程师时&#xff0c;大部分同学关注点都在高大上的模型&#xff0c;一线优秀的项目。但大家往往忽略了一点&#xff0c;人工智能的模型、项目最终还是要靠程序和算法实现。算法能力是每一个程序员的基本功…

论文浅尝 | DI刊发的那些有关Knowledge Graph的论文

本文转载自公众号&#xff1a;数据智能英文刊知识图谱被称为人工智能的基石&#xff0c;它的前身是语义网&#xff0c;由谷歌在2012年率先提出&#xff0c;用于改善自身的搜索业务。Data Intelligence执行主编、东南大学计算机科学与技术学院漆桂林教授这样定义知识图谱&#x…

缓存那些事

本文已发表于《程序员》杂志2017年第3期&#xff0c;下面的版本又经过进一步的修订。 一般而言&#xff0c;现在互联网应用&#xff08;网站或App&#xff09;的整体流程&#xff0c;可以概括如图1所示&#xff0c;用户请求从界面&#xff08;浏览器或App界面&#xff09;到网络…

LeetCode 42. 接雨水(双指针、单调栈)

文章目录1. 题目2. 解题2.1 正反扫描法2.2 双指针2.3 单调栈1. 题目 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图&#xff0c;在这种情况下&am…

论文浅尝 - IJCAI | Knowledge is NOT always you need: 外部知识注入预训练模型的利与弊...

转载公众号 | 浙大KG论文题目&#xff1a;Drop Redundant, Shrink Irrelevant: Selective Knowledge Injection for Language Model Pretraining本文作者&#xff1a;张宁豫&#xff08;浙江大学&#xff09;、邓淑敏&#xff08;浙江大学&#xff09;、张亦弛&#xff08;阿里…

圆形的CNN卷积核?华中大清华康奈尔提出圆形卷积,进一步提升卷积结构性能!...

文 | 小马编 | 极市平台写在前面目前正常卷积的感受野大多都是一个矩形的&#xff0c;因为矩形更有利于储存和计算数据的方便。但是&#xff0c;人类视觉系统的感受野更像是一个圆形的。因此&#xff0c;作者就提出&#xff0c;能不能将CNN卷积核的感受野也变成圆形呢&#xff…

Android自定义Lint实践

Android Lint是Google提供给Android开发者的静态代码检查工具。使用Lint对Android工程代码进行扫描和检查&#xff0c;可以发现代码潜在的问题&#xff0c;提醒程序员及早修正。 为保证代码质量&#xff0c;美团在开发流程中加入了代码检查&#xff0c;如果代码检测到问题&…