ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
1.是什么? 分布式的数据检索分析数据库. 2.干什么? 存储和检索数据信息 3.跟其他数据库的区别. 包含了多库多表跨字段的联想查询.可用于典型的 猜你喜欢 类似的关联性分析.有一个关联评估权重和关联信息的分组功能.是大数据获取有效数据,进行预测的基础.这是其他数据库没有的特性. 另外其分布式和默认对所有字段索引的属性使其在PB级别的数据量下也可以快速响应检索结果 4.如何使用? java的库和rest风格的接口 PHP或者非java语言的应用主要是依赖第二种 PHP可以引入官方php库,其实质主要是curl请求elasticsearch提供的接口. 有两种请求方式:一种是简单url,动作和参数都在url中体现,另一种是在body中体现. 5.概念 index    索引\[相当于数据库\]: 数据存储的地方   type    类型\[相当于表\]: 相同结构的数据的集合 document    文档\[相当于表中的记录\]: 结构化的数据记录 6.具体使用 资源地址: 格式 /\_index/\_type/{\_id}  其中\_id 唯一标识一条文档 操作方式: 存在:开放的接口是通过head方法请求验证 curl -i -XHEAD[http://localhost:9200/website/blog/123](http://localhost:9200/website/blog/123) 但建议用查询GET,替代HEAD 增: 新增es自然生产\_id的文档记录 PUT /{index}/{type}/{id} {   "field": "value",   ...[elastic-search](elastic-search.md) } 响应:es创建\_id的新建索引信息,自动生成的ID有22个字符长,URL-safe, Base64-encoded string universally unique identifiers, 或者叫 UUIDs。 {    "\_index":    "website",    "\_type":     "blog",    "\_id":       "wM0OSFhDQXGZAWDf0-drSA",    "\_version":  1,    "created":   true } 删: 删除指定\_id的文档 DELETE /website/blog/123 响应 {   "found" :    true, //成功返回200,未找到返回404   "\_index" :   "website",   "\_type" :    "blog",   "\_id" :      "123",   "\_version" : 3, //任何操作都会导致版本增加,这是用来指导集群节点能正确处理和响应的机制.可能有锁的机制避免并发操作 } 改: 更新指定文档或写入自定义\_id的记录 PUT /website/blog/123     {   "title": "My first blog entry",   "text":  "Just trying this out...",   "date":  "2014/01/01" } 响应:文档索引创建信息 {    "\_index":    "website",    "\_type":     "blog",    "\_id":       "123",    "\_version":  1,    "created":   true } 查: 根据\_id检索文档 GET /website/blog/123?pretty 响应:存储文档时的索引信息及元数据 {   "\_index" :   "website",   "\_type" :    "blog",   "\_id" :      "123",   "\_version" : 1,   "found" :    true, //即使没有找到记录也会返回数据,此处found会显示false   "\_source" :  {       "title": "My first blog entry",       "text":  "Just trying this out...",       "date":  "2014/01/01"   } } 清空 query\_string: 指导行为细节的指标 pretty:美化响应输出 \_source:仅显示需要响应的元数据字段 op\_type:明确主行为的细节.因为主行为可能有二义,比如PUT通常为更新操作,需要指定文档\_id,这时设置op\_type=create,行为会被理解为新建一个自定义\_id的文档.新建成功返回201\[created\]如果已存在,新增失败返回409\[conflict\] 这里可以直接等于 \_create version:对指定版本的文档进行操作 \_update:局部更新文档. 结构化\[DSL\]查询 通常查询必有query  bool是支持符合查询的标识, bool查询的目的是为了更多的匹配来计算分数.其查询语句是可以嵌套的. 答案在于分值是如何计算的。bool查询会运行每个match查询,将它们的分值相加,然后乘以匹配的查询子句的数量,最后除以所有查询子句的数量。相同层次的每个子句都拥有相同的权重。 其分值会被顶层 must  是一定要 must not是一定不要 should 是不必要,但只要有会增加关联性评分 term是 == 完全匹配 terms是 in\_array 匹配 match是分词匹配 字符串类型文档字段会有两种查询类型 keyword   未分词 text    包含分词 wildcard    模糊匹配 需要通配符\*来代替模糊 #6 elasticsearch 提示Parse Failure \[No mapping found for \[filed\] in order to sort on\]\] 的解决办法 排序代码如下: `{ "sort": [ { "timestamp": { "order": "desc" } } ] }` 修改后: `{ "sort": [ { "timestamp": { "unmapped_type": "long"} } ] }` 默认匹配评分\_score 较大的排序靠前 | 一级分类 | 二级分类 | 具体类型 | | --- | --- | --- | | 核心类型 | 字符串类型 | string,text,keyword | | 整数类型 | integer,long,short,byte | | 浮点类型 | double,float,half\_float,scaled\_float | | 逻辑类型 | boolean | | 日期类型 | date | | 范围类型 | range | | 二进制类型 | binary | | 复合类型 | 数组类型 | array | | 对象类型 | object | | 嵌套类型 | nested | | 地理类型 | 地理坐标类型 | geo\_point | | 地理地图 | geo\_shape | | 特殊类型 | IP类型 | ip | | 范围类型 | completion | | 令牌计数类型 | token\_count | | 附件类型 | attachment | | 抽取类型 | percolator |