在 Elasticsearch 中,cat API 仅适用于使用 Kibana 控制台或命令行供人类使用。 它们不适合应用程序使用。 对于应用程序消耗,我们建议使用相应的 JSON API。所有的 cat 命令都接受查询字符串参数 help,以查看它们提供的所有 header 和信息,并且  /_cat命令仅列出所有可用的命令。 在我们的实际使用中,我们,我们有时看到别人打入如下的命令: GET _cat/nodes?v&h=name,disk.avail,search.query_total,heap.p…

2020年10月27日 0条评论 618点热度 0人点赞 阅读全文

游标查询(scroll)简介 scroll 查询 可以用来对 Elasticsearch 有效地执行大批量的文档查询,而又不用付出深度分页那种代价。 游标查询会取某个时间点的快照数据。 查询初始化之后索引上的任何变化会被它忽略。 它通过保存旧的数据文件来实现这个特性,结果就像保留初始化时的索引 视图 一样。 启用游标查询可以通过在查询的时候设置参数 scroll 的值为我们期望的游标查询的过期时间。 游标查询的过期时间会在每次做查询的时候刷新,所以这个时间只需要足够处理当前批的结果就可以了,而不是处理查询结果的所有…

2020年10月16日 0条评论 941点热度 0人点赞 阅读全文

创建索引 创建一个名为my_index的索引 PUT localhost:9200/my_index 创建映射 PUT localhost:9200/my_index/my_type/_mapping { "properties": { "name": { "type": "text" } } } 添加一个文档 PUT localhost:9200/my_index/my_type/2 { "name": "李锋镝" } 查询: GET localhost:9200/my_index/my_type/2 { "_i…

2019年12月11日 0条评论 879点热度 0人点赞 阅读全文

路由一个文档到一个分片中 当索引一个文档的时候,文档会被存储到一个主分片中。Elasticsearch如何知道一个文档应该存放到哪个分片中呢?当我们创建文档时,它如何决定这个文档应当被存储在分片1还是分片2中呢? 首先这肯定不会是随机的,否则将来要获取文档的时候我们就不知道从何处寻找了。实际上,这个过程是根据下面这个公式决定的: shard = hash(routing) % number_of_primary_shards routing是一个可变值,默认是文档的 _id ,也可以设置成一个自定义的值。 rout…

2019年12月04日 0条评论 682点热度 0人点赞 阅读全文

修改max_result_window参数即可。 Elasticsearch API: PUT 127.0.0.1:9200/{indexType}/_settings 参数: { "index": { "max_result_window": 100000 } } max_result_window视具体情况决定大小。

2019年11月20日 0条评论 997点热度 0人点赞 阅读全文

常用的 match_all查询 match_all查询简单的匹配所有文档。在没有指定查询方式时,它是默认的查询: { "match_all": {}} match查询 无论你在任何字段上进行的是全文搜索还是精确查询,match查询是你可用的标准查询。 如果你在一个全文字段上使用match查询,在执行查询前,它将用正确的分析器去分析查询字符串: { "match": { "tweet": "About Search" }} 如果在一个精确值的字段上使用它,例如数字、日期、布尔或者一个not_analyzed字符串字段…

2019年11月05日 0条评论 699点热度 0人点赞 阅读全文

如果不对某一特殊的索引或者类型做限制,就会搜索集群中的所有文档。Elasticsearch转发搜索请求到每一个主分片或者副本分片,汇集查询出的前10个结果,并且返回给我们。这种搜索在ES中称为空搜索。 如下: localhost:9200/_search { "took": 67, "timed_out": false, "_shards": { "total": 5, "successful": 5, "skipped": 0, "failed": 0 }, "hits": { "total": 4, "max_…

2019年10月24日 0条评论 751点热度 0人点赞 阅读全文

准备工作 环境准备 JAVA版本 java version "1.8.0_121" Java(TM) SE Runtime Environment (build 1.8.0_121-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode) ES版本 { "name": "pYaFJhZ", "cluster_name": "my-cluster", "cluster_uuid": "oC28y-cNQduGItC7qq5W8w", "…

2019年09月20日 3条评论 2613点热度 0人点赞 阅读全文

文档 什么是文档 在大多数应用中,多数实体或对象可以被序列化为包含键值对的 JSON 对象。 一个 键 可以是一个字段或字段的名称,一个 值 可以是一个字符串,一个数字,一个布尔值, 另一个对象,一些数组值,或一些其它特殊类型诸如表示日期的字符串,或代表一个地理位置的对象: { "name": "John Smith", "age": 42, "confirmed": true, "join_date": "2019-06-01", "home": { "lat": 51.5, "lon": 0.1 }, "acc…

2019年09月18日 0条评论 1313点热度 0人点赞 阅读全文

背景&痛点 通过ES进行查询,如果需要新增查询条件,则每次都需要进行硬编码,然后实现对应的查询功能。这样不仅开发工作量大,而且如果有多个不同的索引对象需要进行同样的查询,则需要开发多次,代码复用性不高。 想要解决这个问题,那么就需要一种能够模块化、配置化的解决方案。 解决方案 思路一:配置参数 通过配置参数的方式来配置参数映射、查询方式等,代码读取配置文件,根据配置文件构建查询语句。 优点:可配置化,新增查询字段基本不需要改动代码,除非增加新的查询方式。 缺点:配置文件太多、太复杂,配置文件配置错误将会导致…

2019年09月12日 0条评论 4406点热度 0人点赞 阅读全文
12