(五)Java操作elasticSearch(1)

  • elasticSearch的操作
    • 一、索引库的操作:
      • 1、mapping属性:
      • 2、创建索引库:
      • 3、查看、删除索引库
      • 4、修改索引库:
    • 二、文档操作
      • 1、新增文档:
      • 2、查看、删除文档:
      • 3、修改文档:
    • 三、RestClient操作索引库:
      • 1、Java操作es官网:[Java High Level REST Client](https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/java-rest-high.html)
      • 2、RestClient操作索引库:
        • 2.1 分析数据结构:
        • 2.2 初始化JavaRestClient:
        • 2.3 JavaRestClient创建索引库:
        • 2.4 JavaRestClient删除索引库:
      • 3、总结:
    • 四、RestClient操作文档:
      • 1、初始化操作上述已经讲解
      • 2、新增文档操作:
      • 3、查询文档操作:
      • 4、修改文档操作:
      • 5、删除文档操作:
      • 6、批量新增文档:
      • 7、总结

elasticSearch的操作

一、索引库的操作:

1、mapping属性:

mapping是对索引库中文档的约束,常见的mapping属性包括:
1.1 type:字段数据类型,常见的简单类型有:

字符串:text(可分词的文本)、keyword(精确值,例如:品牌、国家、ip地址)
数值:long、integer、short、byte、double、float、
布尔:boolean
日期:date
对象:object
注:一个字段可以有多个值,写成数组的形式,但是数组不是字段的数据类型。也就是说,数组形式的字段的类型=数组里的元素的类型。

1.2 index:是否创建索引,默认为true,也就是所有字段都会被创建倒排索引;
1.3 analyzer:使用哪种分词器,结合text类型使用,其他类型都无需分词;
1.4 properties:某字段的子字段,如object的子属性就可以用这个properties来指定。

es中允许一个字段有多个值,但它没有数组的概念,所以只管值的类型即可。
(五)Java操作elasticSearch(1)_第1张图片

2、创建索引库:

(五)Java操作elasticSearch(1)_第2张图片

3、查看、删除索引库

(五)Java操作elasticSearch(1)_第3张图片

4、修改索引库:

es中是不允许修改索引库的,因为索引库一旦创建,它的数据结构就创建好了,也就是它的mapping映射就已经实现了,es是根据这些mapping来创建倒排索引的,如果这个时候修改原有的索引库,那么就会导致倒排索引彻底失效。所以是禁止修改索引库的。

es禁止修改原有的字段,但是可以添加新的字段,语法如下:如果是修改原有字段,则会报错,所以新字段名不能和原来的字段名一致。
(五)Java操作elasticSearch(1)_第4张图片

二、文档操作

1、新增文档:

(五)Java操作elasticSearch(1)_第5张图片

2、查看、删除文档:

(五)Java操作elasticSearch(1)_第6张图片

3、修改文档:

全量修改:逻辑是根据id先将文档删除掉,然后再将新的文档添加进去;
当文档id不存在的时候,这个操作就等价于新增操作;
(五)Java操作elasticSearch(1)_第7张图片

三、RestClient操作索引库:

1、Java操作es官网:Java High Level REST Client

2、RestClient操作索引库:

2.1 分析数据结构:

mapping要考虑的问题:字段的字段名、数据类型、是否参与搜索、是否分词、如果分词的话分词器是什么?
(五)Java操作elasticSearch(1)_第8张图片字段名和数据表的字段名一致即可;
数据类型和数据表的数据类型一致即可;
是否参与搜索和是否分词与业务相关。
注:
1、id在es中要用keyword,而不是long类型;
2、如下图:
3、因为在搜索的时候,可能是根据多个字段进行搜索,但是根据多个字段和根据单个字段进行搜索,显然是根据单个字段进行搜索的效率要高。这个时候又要多个字段的搜索,又要保证效率,es提供了如下的功能:

(五)Java操作elasticSearch(1)_第9张图片(五)Java操作elasticSearch(1)_第10张图片
因此,上图数据表的索引库设计如下:

(五)Java操作elasticSearch(1)_第11张图片

2.2 初始化JavaRestClient:

(五)Java操作elasticSearch(1)_第12张图片(五)Java操作elasticSearch(1)_第13张图片

2.3 JavaRestClient创建索引库:

(五)Java操作elasticSearch(1)_第14张图片其中,MAPPING_TEMPLATE是DSL语句。可以把DSL语句写在一个常量中,然后引用,避免代码过于臃肿。

2.4 JavaRestClient删除索引库:

(五)Java操作elasticSearch(1)_第15张图片

3、总结:

(五)Java操作elasticSearch(1)_第16张图片

四、RestClient操作文档:

(五)Java操作elasticSearch(1)_第17张图片

1、初始化操作上述已经讲解

2、新增文档操作:

从数据库查询数据,然后将这个数据的格式转成索引库需要的格式,然后添加到索引库;
(五)Java操作elasticSearch(1)_第18张图片批量导入索引库:
(五)Java操作elasticSearch(1)_第19张图片(五)Java操作elasticSearch(1)_第20张图片

3、查询文档操作:

(五)Java操作elasticSearch(1)_第21张图片

4、修改文档操作:

(五)Java操作elasticSearch(1)_第22张图片

5、删除文档操作:

(五)Java操作elasticSearch(1)_第23张图片

6、批量新增文档:

(五)Java操作elasticSearch(1)_第24张图片(五)Java操作elasticSearch(1)_第25张图片

7、总结

(五)Java操作elasticSearch(1)_第26张图片

你可能感兴趣的:(elasticSearch,elasticsearch,java,大数据,es)