elasticsearch7完全开发指南
- 格式:pdf
- 大小:4.73 MB
- 文档页数:444
Elasticsearch 7 Java编程详解一、引言Elasticsearch是一个开源的分布式搜索和分析引擎,它提供了强大的全文搜索和实时数据分析功能。
在许多应用程序中,Elasticsearch作为数据存储和搜索引擎被广泛应用。
本文将详细介绍如何使用Java编程与Elasticsearch 7进行交互,包括建立连接、索引文档、执行搜索等方面的内容。
二、Elasticsearch 7的Java客户端Elasticsearch提供了丰富的客户端库,支持多种编程语言。
在Java环境中,我们可以使用官方提供的Java客户端库与Elasticsearch进行交互。
在Elasticsearch 7中,官方提供了高级REST客户端,用于替代以前的Transport客户端。
还有一些第三方的Java客户端库,如Jest、Spring Data Elasticsearch等。
三、建立连接与Elasticsearch建立连接是操作的第一步。
在使用Java客户端与Elasticsearch进行交互时,我们需要指定Elasticsearch的主机和端口号,并使用官方提供的RestClient.Builder来建立连接。
```java// 创建RestClient实例RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(new HttpHost("localhost", 9200, "网络协议")));```在以上示例中,我们创建了一个RestHighLevelClient实例,并指定了Elasticsearch的主机为localhost,端口号为9200。
四、索引文档在Elasticsearch中,文档是基本的数据单元。
我们可以使用Java客户端来索引文档,并对文档进行增删改查等操作。
ElasticSearch7使用指导Elasticsearch是一个分布式、开源的实时和分析引擎,它建立在全文引擎Apache Lucene™之上,并提供了可扩展性和高可用性。
在本篇指南中,我们将介绍ElasticSearch 7的使用方法。
**1.安装和配置**- 运行`bin/elasticsearch`脚本以启动Elasticsearch。
- 修改`config/elasticsearch.yml`文件来配置Elasticsearch的参数,如网络绑定地址、集群名称、节点名称等。
**2.索引和文档**- 在Elasticsearch中,数据是存储在索引中的。
首先需要创建一个索引来存储文档。
- 使用PUT请求创建一个索引,如:`PUT /my-index`。
- 向索引中添加文档,使用POST请求,指定索引和文档类型,如:`POST /my-index/_doc`。
-可以使用JSON格式的数据来指定文档内容。
**3.和过滤**- Elasticsearch提供了丰富的和过滤功能。
- 使用GET请求来执行,指定索引和查询条件,如:`GET /my-index/_search?q=user:john`。
-可以使用布尔查询、字段查询、范围查询等来定义查询条件。
- 通过设置过滤器可以进一步限定结果,如:`GET /my-index/_search?filter_path=hits.hits._source&size=10`。
**4.聚合和分析**- Elasticsearch还提供了强大的聚合和分析功能,用于汇总和统计数据。
- 使用POST请求来执行聚合操作,如:`POST /my-index/_search`。
-编写一个聚合查询,指定聚合类型、字段和其他参数。
-聚合操作可以用于计算总数、求和、平均值等统计信息,以及构建数据图表。
**5.高级功能和集群管理**- Elasticsearch提供了许多高级功能,如多语言支持、分布式、动态映射等。
python操作Elasticsearch7.x python3 elasticsearch 先看下⾯我给准备的⼲货,如果不能满⾜,pls官⽹⽂档:https:///project/elasticsearch/dev ⽂档: https://elasticsearch-py.readthedocs.io/en/v7.15.1/开发API官⽹例⼦: https://www.elastic.co/guide/en/elasticsearch/client/python-api/current/examples.html update delete documnt 见⽂章最后1依赖: python3.7pip3 install elasticsearch==7.9.11、连接ES,创建索引from elasticsearch import Elasticsearches = Elasticsearch(['127.0.0.1:9200'],# 在做任何操作之前,先进⾏嗅探# sniff_on_start=True,# # 节点没有响应时,进⾏刷新,重新连接sniff_on_connection_fail=True,# # 每60秒刷新⼀次sniffer_timeout=60)index_name = 'my_index'request_body = {'mappings': {'properties': {'name': {'type': 'text'},'id': {'type': 'integer'},}}}# 创建索引es.indices.create(index=index_name, body=request_body)2、判断索引是否存在为防⽌在创建索引的时候出现重复,产⽣错误,在创建之前最好判断⼀下索引是否存在from elasticsearch import Elasticsearchindex_name = 'my_index'es = Elasticsearch(['127.0.0.1:9200'],# 在做任何操作之前,先进⾏嗅探# sniff_on_start=True,# # 节点没有响应时,进⾏刷新,重新连接sniff_on_connection_fail=True,# # 每60秒刷新⼀次sniffer_timeout=60)# 索引存在,先删除索引if es.indices.exists(index_name):es.indices.delete(index=index_name)else:print('索引不存在,可以创建')# 创建索引es.indices.create(index=index_name, body=request_body)# 查看索引的信息print(())也可以访问:localhost:9200/_cat/indices?v 查看所有的索引3、删除索引删除指定地址的ES服务的索引from elasticsearch import Elasticsearchindex_name = 'my_index'es = Elasticsearch(['127.0.0.1:9200'],# 在做任何操作之前,先进⾏嗅探# sniff_on_start=True,# # 节点没有响应时,进⾏刷新,重新连接sniff_on_connection_fail=True,# # 每60秒刷新⼀次sniffer_timeout=60)es.indices.delete(index=index_name)4、索引增加数据from elasticsearch import Elasticsearchindex_name = 'my_index'es = Elasticsearch(['127.0.0.1:9200'],# 在做任何操作之前,先进⾏嗅探# sniff_on_start=True,# # 节点没有响应时,进⾏刷新,重新连接sniff_on_connection_fail=True,# # 每60秒刷新⼀次sniffer_timeout=60)request_body = {'mappings': {'properties': {'name': {'type': 'text'},'id': {'type': 'integer'},}}}# 索引存在,先删除索引if es.indices.exists(index_name):es.indices.delete(index=index_name)else:print('索引不存在,可以创建')# 创建索引es.indices.create(index=index_name, body=request_body) es.index(index=index_name, id='1', body={'name': '法外狂徒-张三','id': 1,})es.index(index=index_name, id='2', body={'name': '普法教育-李四','id': 2,})5、获取数据from elasticsearch import Elasticsearchindex_name = 'my_index'es = Elasticsearch(['127.0.0.1:9200'],# 在做任何操作之前,先进⾏嗅探# sniff_on_start=True,# # 节点没有响应时,进⾏刷新,重新连接sniff_on_connection_fail=True,# # 每60秒刷新⼀次sniffer_timeout=60)# 查询数据包含两种get search# get查询数据res = es.get(index=index_name, id='1') # 我⽤的是es7,doc_type 可以不传,也可以查询到# search 查询数据# 查询所有商品数据 match_allbody = {'query': {'match_all': {}},'from': page * page_size, # 从第⼏条数据开始'size': page_size # 获取多少条数据}requ_data = es.search(index=index_name, body=body)# 精确查找 term 查询name='法外狂徒-张三'的所有数据body = {'query': {'term': {'name': '法外狂徒-张三'}},}# 精确查找 termsbody = {'query': {'terms': ['法外狂徒-张三', '普法教育-李四']},}# match: 匹配name包含 ‘法外狂徒-张三’的所有数据body = {'query': {'match': ['name': '法外狂徒-张三']},}# 查询id和name包含法外狂徒-张三body = {'query': {'multi_match': ['query': '法外狂徒-张三','fields': ['name', 'id']]},}# 搜索出id为1或者2的所有数据body = {'query': {'ids': ['type': 'test_type','values': ['1', '2']]},}6、复合查询bool# 符合查询bool# bool有3类查询关系,must(都满⾜),should(其中⼀个满⾜),must_not(都不满⾜) from elasticsearch import Elasticsearchindex_name = 'my_index'es = Elasticsearch(['127.0.0.1:9200'],# 在做任何操作之前,先进⾏嗅探# sniff_on_start=True,# # 节点没有响应时,进⾏刷新,重新连接sniff_on_connection_fail=True,# # 每60秒刷新⼀次sniffer_timeout=60)body = {'query': {'bool': {'must': [{'term': {'name': '法外狂徒-张三'}},{'term': {'id': 1}}]}}}# 查询name=‘法外狂徒-张三’并且id=1的数据es.search(index=index_name, body=body) 7、切⽚式查询# 切⽚式查询from elasticsearch import Elasticsearch index_name = 'my_index'es = Elasticsearch(['127.0.0.1:9200'],# 在做任何操作之前,先进⾏嗅探# sniff_on_start=True,# # 节点没有响应时,进⾏刷新,重新连接 sniff_on_connection_fail=True,# # 每60秒刷新⼀次sniffer_timeout=60)body = {'query': {'match_all': {}},'from': 2, # 从第⼆条数据开始'size': 4 # 获取4条数据}# 从第2条数据开始,获取4条数据es.search(index=index_name, body=body) 8、范围查询# 范围查询from elasticsearch import Elasticsearch index_name = 'my_index'es = Elasticsearch(['127.0.0.1:9200'],# 在做任何操作之前,先进⾏嗅探# sniff_on_start=True,# # 节点没有响应时,进⾏刷新,重新连接 sniff_on_connection_fail=True,# # 每60秒刷新⼀次sniffer_timeout=60)body = {'query': {'range': {'id': {'gte': 1, # >=1'lte': 5, # <=5}}},}# 查询1<=id<=5的所有数据# gte 和 lte 也可以换成换成from和 toes.search(index=index_name, body=body)9、前缀查询# 前缀查询from elasticsearch import Elasticsearch index_name = 'my_index'es = Elasticsearch(['127.0.0.1:9200'],# 在做任何操作之前,先进⾏嗅探# sniff_on_start=True,# # 节点没有响应时,进⾏刷新,重新连接 sniff_on_connection_fail=True,# # 每60秒刷新⼀次sniffer_timeout=60)body = {'query': {'prefix': {'name': '法'}},}# 查询前缀为 ‘法’的所有数据es.search(index=index_name, body=body) 10、通配符查询# 通配符查询from elasticsearch import Elasticsearch index_name = 'my_index'es = Elasticsearch(['127.0.0.1:9200'],# 在做任何操作之前,先进⾏嗅探# sniff_on_start=True,# # 节点没有响应时,进⾏刷新,重新连接 sniff_on_connection_fail=True,# # 每60秒刷新⼀次sniffer_timeout=60)body = {'query': {'wildcard': {'name': '*三'}},}# 查询所有以 ‘三’结尾的数据es.search(index=index_name, body=body) 11、查询的数据排序# 排序查询from elasticsearch import Elasticsearch index_name = 'my_index'es = Elasticsearch(['127.0.0.1:9200'],# 在做任何操作之前,先进⾏嗅探# sniff_on_start=True,# # 节点没有响应时,进⾏刷新,重新连接 sniff_on_connection_fail=True,# # 每60秒刷新⼀次sniffer_timeout=60)body = {'query': {'match_all': {}},'sort': {'id': { # 根据id字段升序排序'order': 'asc' # asc 升序, desc 降序}}}# 查处所有数据并按照id⼤⼩排序es.search(index=index_name, body=body)11. update documnt: update:To update a document, you need to specify three pieces of information: index, id, and a body: from datetime import datetimefrom elasticsearch import Elasticsearches = Elasticsearch()doc = {'author': 'author_name','text': 'Interesting modified content...','timestamp': datetime.now(),}res = es.update(index="test-index", id=1, body=doc)print(res['result'])12 Deleting a documentYou can delete a document by specifying its index, and id in the delete() method:es.delete(index="test-index", id=1)原⽂:https:///weixin_41979456/article/details/111932972。
Elasticsearch 是一个基于 Lucene 构建的开源、分布式的搜索引擎。
它提供了一个简单易用的 RESTful API,用于在大数据量下快速、准确地进行搜索和分析。
由于其强大的搜索和分析功能,Elasticsearch 在各行各业都得到了广泛的应用,因此很多人都想了解关于Elasticsearch 的书籍推荐。
在这里,我将为大家介绍一些关于Elasticsearch 的比较好的书籍,希望能够对大家有所帮助。
一、《Elasticsearch: The Definitive Guide》这本书是一本由冠方团队撰写的 Elasticsearch 完全指南。
它详细介绍了 Elasticsearch 的核心概念、使用方法和高级技术,并提供了大量实用的案例和示例。
无论是对 Elasticsearch 初学者还是有一定经验的用户来说,这本书都是一本非常值得阅读和收藏的参考书籍。
二、《Mastering Elasticsearch 5.0》这本书是一本面向有一定 Elasticsearch 使用经验的读者的进阶指南。
它深入分析了 Elasticsearch 的高级特性和技术,并介绍了如何利用这些特性构建复杂的搜索和分析系统。
如果你想深入了解 Elasticsearch 的内部原理和高级应用,这本书会给你带来很大的帮助。
三、《Elasticsearch in Action》这本书是一本实战性很强的 Elasticsearch 使用指南。
它通过大量实际项目案例,详细介绍了如何在实际应用中使用 Elasticsearch 进行数据检索、分析和可视化。
无论是对搜索引擎开发人员还是数据分析师来说,这本书都是一本非常有价值的参考书籍。
四、《Elasticsearch Cookbook》这本书是一本 Elasticsearch 实用技巧合集。
它提供了大量实用的Elasticsearch 使用技巧和最佳实践,涵盖了数据建模、搜索优化、性能调优等方面。
elasticsearch 使用手册Elasticsearch是一个开源的分布式搜索引擎,它基于Apache Lucene构建,并提供了一套RESTful的API接口。
它使用JSON数据格式进行交互,并具备强大的全文搜索和实时分析能力。
本文将介绍Elasticsearch的使用手册,为初学者提供基本的入门指导。
一、安装和配置:1.下载Elasticsearch:首先,我们需要从Elasticsearch的官方网站上下载二进制包,并根据操作系统的不同选择适合的版本。
2.解压和配置:将下载的压缩包解压到本地文件夹,并进入该文件夹。
打开config文件夹下的elasticsearch.yml文件,根据需求修改配置参数,如监听地址、集群名称等。
3.启动Elasticsearch:在终端或命令行中进入Elasticsearch的根目录,执行bin/elasticsearch命令即可启动Elasticsearch。
二、索引和文档:1.创建索引:在Elasticsearch中,索引类似于数据库中的表,它用于存储和组织文档。
我们可以使用PUT请求创建一个新的索引。
2.添加文档:在索引中添加文档是Elasticsearch中的核心操作。
使用POST请求在特定索引下添加文档,文档使用JSON格式表示。
3.搜索文档:Elasticsearch提供了丰富的搜索功能,我们可以使用查询语句对索引中的文档进行搜索。
查询语句可以是简单的关键字搜索,也可以是复杂的布尔查询。
三、Mappings和分析器:1. Mappings:Mappings是指定索引中每个字段的数据类型和属性的过程。
它类似于关系型数据库中的表结构定义。
Mappings还可以指定字段是否分词、是否存储等。
2.分析器:分析器用于对文本进行分词和处理。
Elasticsearch默认使用标准分析器,它将文本按照空格进行分词。
我们可以根据需求自定义分析器,如中文分词、英文分词、停用词过滤等。
elasticsearch 使用手册Elasticsearch是一个开源的搜索和分析引擎,可用于处理大量数据并提供实时和可伸缩的搜索和分析功能。
本文将介绍Elasticsearch 的基本概念、安装配置、核心功能以及常用的API和查询语法。
一、安装配置1.下载安装ElasticsearchElasticsearch的官方网站上提供了各个平台的安装包,可以根据自己的操作系统下载对应的安装包进行安装。
2.配置Elasticsearch安装完成后,需要修改Elasticsearch的配置文件elasticsearch.yml。
其中一些重要的配置包括集群名称、节点名称、监听地址和端口号等。
同一个集群中的节点应该具有相同的集群名称。
二、核心功能1.数据存储和索引Elasticsearch使用分布式的倒排索引来存储和索引数据。
在Elasticsearch中,数据被组织成索引,而索引由多个分片组成。
每个分片可以在集群中的不同节点上进行复制,以提高可用性和性能。
2.文档和字段Elasticsearch使用JSON格式来存储数据。
每条数据被称为一个文档,每个文档可以包含多个字段。
字段可以是不同的数据类型,如字符串、数值、布尔值等。
3.搜索和查询Elasticsearch提供了丰富的查询功能,可以通过各种条件对文档进行搜索。
查询可以使用Query DSL或简单的字符串进行构建。
可以进行全文搜索、精确匹配、模糊搜索、范围搜索等。
4.聚合和分析Elasticsearch提供了聚合功能,可以对搜索结果进行统计和分析。
聚合包括词条聚合、范围聚合、日期聚合等,可以对文档的某个字段进行分组、计数、求和等操作。
三、常用API和查询语法1.索引操作API使用索引操作API可以创建、更新和删除索引。
主要的API包括创建索引、删除索引、更新索引设置、关闭索引和打开索引等。
2.文档操作API文档操作API主要用于对单个文档进行操作,主要包括索引文档、获取文档、更新文档和删除文档等。
在PHP中,使用Elasticsearch 7的客户端库来索引(创建或更新)文档的过程大致如下。
请确保你已经安装了Elasticsearch PHP客户端。
如果没有安装,可以通过Composer来安装:```bashcomposer require elasticsearch/elasticsearch```以下是一个使用Elasticsearch PHP客户端索引文档的基本示例:```php<?phprequire 'vendor/autoload.php';use Elasticsearch\ClientBuilder;// 实例化一个Elasticsearch客户端$client = ClientBuilder::create()->setHosts(['localhost:9200'])->build();// 设置要索引的文档数据$params = ['index' => 'your_index', // 替换为你的索引名'id' => 'your_id', // 替换为你想要指定的文档ID'body' => ['field1' => 'value1','field2' => 'value2'// ... 其他字段]];// 索引文档$response = $client->index($params);print_r($response);```在上面的代码中,`your_index` 是你要添加文档的索引名,`your_id` 是文档的ID。
如果不指定ID,Elasticsearch会自动生成一个唯一的ID。
`field1` 和`value1` 是你的文档内容,你可以根据实际需要添加任意多的字段和值。
ElasticSearch详细介绍与使用指南ElasticSearch是一个开源的、基于Lucene的全文搜索引擎。
它使用Java编写,以分布式搜索和分析引擎为目标,可用于搜索各种类型的文档。
ElasticSearch以其快速、高性能的搜索能力和易于扩展的特性而获得了广泛的应用。
一、ElasticSearch的特点1.分布式的架构模式ElasticSearch具有分布式架构的特性,将数据分布在多个节点上。
每个节点都可以同时扮演多个角色,如主节点、数据节点、负载均衡节点等等。
这种系统架构可以让数据在不同的节点上分布存储,在存储数据时进行副本备份、故障恢复和故障转移等操作,以确保数据的高可用性和容错性.2.全文、实时搜索ElasticSearch不仅支持简单关键字和短语查询,同时还支持复杂的全文检索,如匹配模糊搜索、通配符匹配搜索等。
ElasticSearch不仅可以快速地搜索现有索引,还可以实时更新索引。
例如,如果一个文档被添加或修改,ElasticSearch会根据需要更新索引以使其可用。
3.支持大规模数据的处理和分析ElasticSearch可以处理大规模数据和进行复杂的查询分析,它提供了大量的查询和聚合语句。
聚合语句可以帮助用户根据各种维度来汇总结果,同时还提供了多种聚合方式,如统计、平均、最小值、最大值等等,让用户方便地分析和了解数据。
4.可扩展的架构设计ElasticSearch是基于可扩展的架构设计,提供了多种扩展方式和协议,可以与多种数据源进行协作。
例如,ElasticSearch可以与Hadoop、Logstash、Kibana等开源框架进行集成,以协同处理海量数据。
二、ElasticSearch的基础概念1.索引(Index)ElasticSearch的数据存储单元是索引,一个索引包含了多个文档。
索引类似于关系型数据库中的表,索引名称必须全部小写,不能以点和短划线开头,不能包含逗号。
【elasticsearch使用手册】一、引言在当今信息爆炸的时代,我们面对的数据越来越庞大,各种数据存储和检索的需求也随之增加。
而Elasticsearch作为一种开源的分布式搜索引擎,具有强大的全文检索能力和高效的数据处理能力,成为了许多企业和数据科学家的首选。
本文将以Elasticsearch使用手册为主题,深入探讨其功能和操作,帮助读者更好地理解和运用该工具。
二、Elasticsearch概述Elasticsearch是一个基于Apache Lucene的开源搜索引擎,它提供了一个分布式、多用户的全文搜索引擎。
作为实时分析的理想选择,Elasticsearch可以用于各种用例中,例如日志聚合,监控,搜索,推荐等。
它具有高可用性、可扩展性和易用性的特点,使得用户可以方便地进行数据存储、搜索和分析。
三、安装和配置1. 环境准备:在安装Elasticsearch之前,需要确保Java环境已经安装并配置好。
2. 下载安装包:从官方全球信息湾下载最新版本的Elasticsearch安装包,并解压至指定目录。
3. 配置文件:修改config目录下的elasticsearch.yml文件,设置集群名称、节点名称、网络绑定位置区域等参数。
4. 启动Elasticsearch:运行bin目录下的elasticsearch脚本来启动Elasticsearch服务。
四、核心概念1. 索引:Elasticsearch中的索引类似于关系型数据库中的数据库,它是文档的集合。
2. 类型:每个索引可以包含一个或多个类型,类型相当于表的概念。
3. 文档:文档是索引中的最小数据单元,它是一个JSON格式的数据。
4. 分片和副本:Elasticsearch将索引分成多个分片,每个分片都是一个独立的索引,同时还可以创建多个分片的副本以提高容错性。
五、数据操作1. 索引数据:通过HTTP请求向Elasticsearch服务器发送文档数据,即可将文档数据索引到指定的索引中。
Table of Contents1. 开发指南i. 开始i. 基本概念ii. 安装iii. 操作集群iv. 修改数据v. 操作数据ii. 文档APIi. 索引APIiii. 搜索APIi. 搜索ii. URI搜索iii. 请求体(request body)搜索iv. 搜索模板v. 搜索分片APIvi. 聚合(aggregations)vii. facetsviii. 启发者(suggesters)ix. 多搜索APIx. 计数APIxi. 搜索存在(search exist)APIxii. 验证APIxiii. 解释APIxiv. 过滤器(percolator)xv. more like this apiiv. java APIi. 客户端ii. 索引APIiii. 获取APIiv. 删除APIv. 更新APIvi. bulk APIvii. 查询APIviii. 计数APIix. 基于查询的删除APIx. facets2. 例子3. es vs solr4. elasticsearch river jdbcelasticsearch-guide开发指南开始基本概念安装操作集群修改数据操作数据文档API索引API搜索API搜索URI搜索请求体(request body)搜索搜索模板搜索分片API聚合(aggregations)facets启发者(suggesters)多搜索API计数API搜索存在(search exist)API验证API解释API过滤器(percolator)more like this apijava API客户端索引API获取API删除API更新APIbulk API查询API计数API基于查询的删除APIfacets例子es vs solrelasticsearch river jdbcElasticsearch是一个高可扩展的、开源的全文本搜索和分析工具。
它允许你以近实时的方式快速存储、搜索、分析大容量的数据。
Elasticsearch7完全开发指南elasticsearch目前是业内最流行的存储、搜索、分析、可视化数据引擎,笔者闲暇之余翻译了官网的文档,以供英文欠缺的朋友学习、阅读。
文中贯穿着笔者多年的开发和使用经验,相信您会从本书中有所收获。
笔者水平有限,不足之处恳请不吝斧正。
版权所有,未经笔者书面允许任何人、单位、组织、机构等不得用于任何商业用途。
Adam(亚当)著、译Email:610417806@Blog:https:///zhaojianting2019.04.01作者简介Adam,工学硕士、高级架构师、高级程序员。
2010起从事(c、c++)ARM系列嵌入式底层驱动程序、DSP芯片、无线传感网络等开发工作。
2014年起开始专注于搜索引擎、数据挖掘、大数据平台架构、推荐算法、神经网络、深度学习等相关架构和开发工作,曾是sphinx开源项目的源码贡献者之一。
Adam曾主导多家大型互联网公司搜索引擎的架构,提出独到的整体性框架方案、排序、性能优化等建设性建议,大幅提升用户体验度。
Adam在大数据平台、数据仓库、实时统计、可视化等大数据领域具有深度整合能力。
在某大型新零售企业,开创性地以elasticsearch为存储、分析、检索核心工具,整合hadoop、db等,实现TB级数据的秒级检索、实时分析、报表产出等,取代昂贵的商业BI工具。
Adam同时也是人工智能领域的先行者,也对传统机器学习、神经网络和目前火热的深度学习算法及实现颇有研究,但对目前人工智能的实际应用前景持审慎、批判的态度。
根据作者多年的开发经验,实际应用中“规则”的作用远大于“算法”,占据主导地位。
作者认为,目前算法也好、人工智能也罢,实际应用和价值都被过于夸大,目前只在图片识别领域有一定的成就。
作者认为,目前被鼓吹的无人驾驶短期内不可能实现,道理很简单,现在拥挤的道路人都难开,更何况程序,况且少有偏差就是关乎人命的问题。
正因如此,据作者了解苹果公司裁撤了整个无人驾驶研发团队,目前国内“某度”公司还在大力鼓吹,说是五年内要上路,作者不敢苟同。
作者认为,鼓吹无非是自欺欺人,更多的目的是套取国家和政府补贴,从交大“汉芯一号”、“红芯浏览器”到加水就能跑的“南阳氢能神车”,难道国人真的没学过初中物理!??!。
额,偏题了!不忘初心,方得始终!脚踏实地,终有所获!目录第1章快速入门 (15)1.1基本概念 (16)近实时(NRT) (16)集群(cluster) (16)节点(node) (16)索引(index) (17)类型(type) (17)文档(document) (17)分片和副本(shards&replicas) (17)1.2安装部署 (20)Linux上安装 (20)1.3开始使用集群 (21)1.3.1集群健康信息 (22)1.3.2列出集群中的索引信息 (23)创建一个索引 (23)1.3.3索引和查询文档 (24)1.3.4删除索引 (25)1.4修改您的数据 (26)1.4.1索引和覆盖文档 (26)1.4.2更新文档 (27)1.4.3删除文档 (28)1.4.4批量操作 (28)1.5开始数据探索旅程 (29)1.5.1加载数据集 (30)1.5.2搜索API (30)1.5.3ElasticSearch查询语言 (36)1.5.4执行搜索 (38)1.5.5条件过滤 (40)1.5.6组合功能 (41)第2章安装部署 (47)2.1安装jdk (47)2.2安装ElasticSearch (48)2.2.1首先调整linux系统的相关参数设置 (49)2.2.2创建用户 (49)2.2.3下载ElasticSearch (49)2.3配置ElasticSearch (50)2.3.1配置文件位置 (51)2.3.2配置文件的格式 (51)2.3.3环境变量替换 (51)2.3.4设置JVM参数 (51)2.3.5安全设置 (52)2.3.6创建密钥库 (53)2.3.7列出密钥库中的设置项 (53)2.3.8添加字符串设置 (53)2.3.9添加文件设置 (53)2.3.10删除设置属性 (54)2.3.11可重载的安全设置 (54)2.3.12日志配置 (54)2.3.13配置日志级别 (58)2.3.14Json日志格式 (59)2.4跨集群复制设置(只有用于多个集群间的数据恢复) (59)2.4.1远程恢复设置 (59)2.4.2高级远程恢复设置 (60)2.4.3索引生命周期管理设置 (60)2.4.4序列号设置 (61)2.4.5监控功能设置 (61)2.4.6一般的监控设置 (61)2.4.7监控收集设置 (61)2.4.9HTTP导出器设置 (63)2.4.10X-Pack监控TLS/SSL相关设置 (65)2.4.11X-pack监控TLS/SSL密钥和可信证书设置 (66)2.4.12PEM编码文件 (66)2.4.13JAVA密钥文件 (66)2.5重要的elasticsearch配置 (67)2.5.1数据和日志存放目录 (68)2.5.2集群名称 (68)2.5.3节点名称 (68)2.5.4网络设置 (69)2.5.5重要节点发现和群集形成设置 (69)2.5.6Heap设置 (71)2.5.7JVM heap dump目录设置 (72)2.5.8GC日志设置 (72)2.5.9临时文件存储目录 (72)2.5.10JVM致命错误日志设置 (73)2.6重要的系统参数设置 (73)2.6.1配置系统设置 (74)2.6.2禁用交换区 (74)2.6.3文件句柄数 (76)2.6.4虚拟内存 (76)2.6.5线程数量限制 (77)2.6.6DNS缓存设置 (77)2.6.7JNA临时目录挂载位置 (77)2.7启动检查 (78)2.7.1Heap大小检查 (79)2.7.1文件描述符检查 (79)2.7.3内存锁定检查 (80)2.7.5最大文件大小检查 (80)2.7.6最大虚拟内存检查 (81)2.7.7最大mmap映射区域数量检查 (81)2.7.8JVM模式检查 (82)2.7.9JVM垃圾收集机制核查 (82)2.7.10系统调用过滤器检查 (82)2.7.11发现功能配置检查 (82)2.8启动和停止ElasticSearch (84)2.9加入节点到集群 (84)2.10安装X-Pack (85)第3章API规范 (86)3.1多索引 (87)3.2索引名称中的日期数学格式支持 (87)3.3通用选项 (90)3.3.1格式化搜索结果 (91)3.3.2可读输出 (91)3.3.3日期数学格式 (92)3.3.4返回信息过滤 (94)3.3.5展开设置 (100)3.3.6Bool值 (101)3.3.7数字值 (101)3.3.8时间单位 (102)3.3.9Byte大小单位 (102)3.3.10缺少单位时 (103)3.3.11距离单位 (103)3.3.12模糊性(fuzziness) (104)3.3.13启用堆栈跟踪 (105)3.3.14查询字符串中的请求正文 (107)3.3.15Content-Type要求 (107)3.4基于URL的访问控制 (108)第4章文档API (109)4.1读写文档 (110)4.1.1基本写模型 (110)4.1.2错误处理 (111)4.1.3基本读模型 (112)4.1.4错误处理 (112)4.1.5一些简单的知识点 (112)4.2索引API (114)4.2.1自动创建索引 (115)op_type参数 (116)4.2.2ID自动生成 (117)4.2.3路由 (118)4.2.4分发 (119)4.2.5等待活动分片 (119)4.2.6参数detect_noop (119)4.3GET API (120)4.3.1实时 (120)4.3.2字段选择 (121)4.3.3存储字段 (121)4.3.4直接获取_source (123)4.3.5路由 (124)4.3.6preference参数 (124)4.3.7refresh参数 (124)4.3.8分发 (124)4.3.9版本支持 (124)4.4DELETE API (126)4.5查询删除(_delete_by_query) (127)4.5.1URL参数 (129)4.5.2返回体 (130)4.5.3TASK API (132)4.5.4CANCEL TASK API (133)4.5.5_rethrottle API (133)4.5.6切片 (134)4.6UPDATE API (137)4.6.1使用script更新 (137)4.6.2通过部分字段更新 (139)4.6.3避免没有值变更的更新 (139)4.6.4upsert元素 (140)4.6.5scripted_upsert参数 (141)4.6.6doc_as_upsert参数 (142)4.7查询更新(_update_by_query) (143)4.7.1URL参数 (146)4.7.2请求体 (147)4.7.3使用TASK API (149)4.7.4使用CANCEL TASK API (150)4.7.5_rethrottle参数 (150)4.7.6切片 (151)4.7.7获取新的属性 (153)4.8MGET API (155)4.8.1_source过滤 (157)4.8.2字段(Fields) (158)4.8.3路由 (159)4.9跨集群索引 (165)4.9.4URL参数 (168)4.10批量操作API(Bulk API) (170)4.10.1路由 (174)4.11_reindex API (176)4.11.1使用TASK API (177)4.11.2CANCEL TASK API (178)4.11.3_rethrottle API (179)4.11.4改变字段的名称 (179)4.11.5切片 (180)4.11.6多索引的处理 (182)4.12词条向量(Term Vectors) (185)4.12.1返回值 (185)4.12.2Term过滤 (186)4.12.3行为分析 (188)4.12.4一次获得多个文档的term vector (196)4.13refresh参数 (197)4.13.1如何选择refresh的值 (198)4.13.2refresh=wait_for可能引发强制刷新 (198)4.14乐观并发控制 (199)第5章搜索API (202)5.1搜索(search) (205)5.1.1多索引支持 (205)5.2URI Search (205)5.3Body Search (210)5.3.1explain参数 (215)5.3.2折叠结果(collapse) (219)5.3.3对结果分页 (223)5.3.4高亮结果 (223)5.3.5索引加权 (244)5.3.6命中文档嵌套 (244)5.3.7分数值过滤 (254)5.3.9Post_filter过滤 (255)5.3.10分片选择 (257)5.3.11重排序 (258)5.3.12Script字段 (262)5.3.13Scroll (263)5.3.14Search after (268)5.3.15搜索类型(search_type) (270)5.3.16排序 (271)5.3.17_source字段过滤 (280)5.3.18存储自段 (281)5.3.19Total返回值详解 (282)5.3.20版本 (284)5.4Search Shards API (284)5.4.1支持的参数 (287)5.5Count API (287)5.6Validate API (289)5.7Explain API (290)第6章聚合 (293)6.1Metrics聚合 (294)6.1.1均值聚合(Avg) (295)6.1.2带权重的均值聚合 (297)6.1.3计数聚合 (300)6.1.4统计聚合(stats) (303)6.1.5Geo范围聚合 (307)6.1.6Geo质心聚合 (309)6.1.7最大值、最小值、和值聚合 (312)6.1.8百分位数聚合 (312)6.1.9百分比排名聚合 (319)6.1.11顶部命中聚合(top hits) (324)6.1.12值计数聚合 (333)6.1.13中位数绝对偏差聚合 (334)6.2存储桶聚合(bucket) (337)6.2.1邻接矩阵聚合 (338)6.2.2区间聚合(range) (340)6.2.3日期区间聚合 (348)6.2.4IP区间聚合 (352)6.2.5Terms聚合 (356)6.2.6直方图聚合 (366)6.2.7过滤器聚合 (372)6.2.8多过滤器聚合 (373)第7章查看API (377)7.1应用实例 (377)第8章集群API (380)8.1应用实例 (380)第9章索引API (382)9.1创建索引 (383)9.1.1索引设置 (383)9.1.2映射 (384)9.1.3别名 (384)9.2删除索引 (386)9.3判断索引是否存在 (388)9.4打开关闭索引 (388)9.5收缩索引 (388)9.6映射(mapping) (390)9.6.1数据类型 (390)9.6.2映射属性设置 (397)第10章特定域查询语言(DSL) (401)10.1查询和过滤上下文 (401)10.1.1查询上下文 (401)10.1.2过滤上下文 (402)10.2匹配所有文档 (404)10.3全文查询 (405)10.3.1匹配查询(match) (405)10.3.2短语匹配查询 (406)10.3.3查询字符串 (407)附录A数据集10条---acounts.json (411)附录B数据集100条--shakespeare.json (414)附录C数据集10条--logs.jsonl (417)第1章快速入门Elasticsearch是一个可高度伸缩(扩展)的、开源的全文搜索和分析引擎。