中文es文档https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html
文档元数据
一个文档不仅仅包含它的数据 ,也包含 元数据 —— 有关 文档的信息。 三个必须的元数据元素如下:
_index
文档在哪存放
_type
文档表示的对象类别
_id
文档唯一标识
当我们访问一个安装好的es页面的时候,应该是这个样子,ip:9200
如果我们想向es中插入一条数据,那么可以通过类似于接口工具的东西,向里面加入,交互都是json格式;那么插入文档,首先就是要了解es中文档的存储特点,即上述东西,需要有三个必须的文档原数据: 索引 文档类别 主键;
所以当我插入一条数据的时候是这样子的
https://console-docs.apipost.cn/preview/84d43b73bc307785/84bf4cfa70d4d594
其中 ecommerce/product/4 当没有索引的时候,程序会帮你自动创建
ecommerce 索引 product 相当于数据库的实体类的名称的感觉 4 主键
主键不是必传的,当没有主键的时候,es会帮助我们自动生成一个不会重复的主键
当对于同一个文档 重复通过put请求添加数据的时候,相当于是修改,看下返回结果
里面的version 为3 说明我改了两次了,resutl为updated,说明这次操作并不是增加一个数据,而是修改数据;及时修改的时候字段数据,数量没有任何编号,但是版本号,还是会随之不断增加;
多线程冲突解决:
es 中是通过乐观锁进行处理的,也就是乐观锁,上述中的版本号,相当于一个cas的过程,比对成功才会修改成功,否则会报错,尝试重新操作等;
his
返回结果中最重要的部分是 hits ,它包含 total 字段来表示匹配到的文档总数,并且一个 hits 数组包含所查询结果的前十个文档。
在 hits 数组中每个结果包含文档的 _index 、 _type 、 _id ,加上 _source 字段。这意味着我们可以直接从返回的搜索结果中使用整个文档。这不像其他的搜索引擎,仅仅返回文档的ID,需要你单独去获取文档。
每个结果还有一个 _score ,它衡量了文档与查询的匹配程度。默认情况下,首先返回最相关的文档结果,就是说,返回的文档是按照 _score 降序排列的。在这个例子中,我们没有指定任何查询,故所有的文档具有相同的相关性,因此对所有的结果而言 1 是中性的 _score 。
还有更复杂的操作
https://www.elastic.co/guide/cn/elasticsearch/guide/current/multi-index-multi-type.html
分页查询: 就是查询所有,加入了查询条件from 从第几条开始 size 取多少条数据
http://10.0.59.161:9200/ecommerce/product/_search?size=2&from=0
倒排索引: 索引---文档列表(相似度从高到低)
安装了 es-head,终于跟es链接上了,跨域搞了半天,要进入es容器修改容器中的配置文件
添加允许跨域配置
1 进入es容器
dokcer exec -it f8 /bin/bash -- f8 容器id开头
cat ./config/elasticsearch.yml -- 打开es 配置文件
添加如下内容
http.cors.enabled: true
http.cors.allow-origin: "*"
2 进入 es-head容器
docker exec -it 【containerId】 /bin/bash
执行 find -name 'vendor.js'
并进入到所在文件夹
修改前需要在镜像中安装vim执行apt-get install vim命令若出现E: Unable to locate package vim,不要忘了执行apt-get update,重新执行 apt-get install vim
修改如下内容:
vim进入后,:6886 和:7573定位到6886行和7573行,两处,修改contentType为 application/json;charset=UTF-8
是为了将数据返回格式改为json,这样返回的数据就可以在页面解析了
修改后不用重启容器,直接去es-head网页刷新并重新搜索即可。
效果如图
可以看到搜素执行的语句,以及返回的数据以及格式