설치 및 ElasticSearch API의 기본 동작

ElasticSearch는 대용량 데이터에 대한 검색이 매우 친절, 현재 가장 인기있는 검색 엔진, 높은 동시성 시나리오에서, 또한 안정적이고 빠른 특성을 재생할 수 있습니다. 개발자는 빅 데이터이며, 검색 인덱스 서비스는 매우 미들웨어 수요가있다. ElasticSearch 비록 모두가 좋아에 의해, 그러나, 그래서 항상 움직이지 않은 이야기하는 학습하기 위해 지역 사회가 들린다 빠른 반복 속도, 그리고 지금은 활동적인 지역 사회를 위해,이 지속적인 개선이다. 나는 현재의 접촉에 6.x의에 5.x 버전, 7.x의 버전에서, ElasticSearch를 사용합니다. 버전에서 업그레이드도 ElasticSearch 주류 포옹 기술 변화는, 특히 JDK 지원 및 컨테이너 기술의 새로운 버전을 지원했다.

설치

의 최신 버전을 기반으로 ElasticSearch-7.5.0같은 다운로드 공식 웹 사이트로 작동, 당신은 ytao 공공 장소에서 [번호] 보낼 수있는, 너무 느린 es다운로드 링크를 얻을.

설치 환경이 기사와 관련 패키지 :

操作系统    CentOS 7.5 64位
ElasticSearch 7.5.0
Kinbana 7.5.0

JDK 환경

ElasticSearch는 이제 JDK를 설치하지 않아도, JDK 환경 7.x와 함께 제공됩니다. 기본값은 결정하는 것입니다 여부를 현재 서버 설치 JDK, 그렇지 않으면 자신의 JDK는 물론, 이것은 또한 수동으로 설정할 수 있습니다 사용, JDK 설치 사용하여 서버에 설치합니다.

시동 계정 만들기

ElasticSearch 기본 루트 계정 권한에 의해 지원되지 않기 때문에 첫 번째 단계가 시작 계정을 만드는 것입니다, 그래서 시작합니다.
의 ElasticSearch 말이지을 실행 그룹을 만들기 :

groupadd es

ES의 사용자 그룹을 생성합니다 :

useradd elastic -g es 

새 사용자 암호 설정 :

passwd elastic

ElasticSearch 패키지의 승인을 추출하려면

chown -R elastic:es elasticsearch-7.5.0

구성 파일을 수정

/elasticsearch-7.5.0디렉토리에 config디렉토리가 elasticsearch.yml필요한 현재의 구성을 수정 파일.

  • cluster.name 이름은 클러스터에 속합니다
  • node.name 현재 노드 이름
  • network.host 현재 노드는 바인딩, 바인딩 주소 0.0.0.0에 대한 모든 액세스
  • http.port 포트 번호의 서비스 밖에 제공
  • 나는 일반적으로 기본 디렉토리를 적용하지 않지만, 제공하는 path.data 데이터 저장 디렉토리 자체를 정의 디렉토리 권한 부여
  • path.log 로그 디렉토리 및 유사한 구성 path.data

또 다른 중요한 구성의 현재 디렉토리에있는 jvm.options파일 설정.
여기에 힙 메모리 크기를 설정, 50 % 컴퓨터 메모리의 크기를 설정하는 것이 좋습니다.

-Xms4g
-Xmx4g

보류? 분석 일시적으로 쓸모하고 설명하기 위해 미래의 문서에서 사용되는 다른 구성.

출발

설치 프로파일 설정을 기본 시작 값, 직접 실행 ./bin/elasticsearch, 정말 기대에 반하지 예외를 시작합니다.

두 가지 예외 위의 그림을 던져.

  • 첫번째는 가상 메모리는, 적어도 262,144이 너무 작다는 것이다.
  • 상기 제 2 전류의 기본 구성은 적합하지 않다 [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes는 적어도 하나 개의 구성으로 배치.

이제 서버의 가상 메모리를 증가 :

# 编辑 sysctl.conf 文件
vim /etc/sysctl.conf

# 在 sysctl.conf 中添加
vm.max_map_count=262144

# 查看刚设置的是否生效
sysctl -p

설정 cluster.initial_master_nodes 매개 변수를 구성 :

cluster.initial_master_nodes: ["node-1"]

전체를 다시 시작한 후, 예외는, 액세스 발생되지 ip:9200등등 클러스터 이름, 노드 이름, 버전 정보 등을 포함, 데이터 반환 정보를 :

기본 작업 API

조작하기 전에 설치 API는 다음 명령은 키바에서 완전히 실행됩니다, 키바을 수행한다. 에서, 키바를 추출한 후 kibana.ymlElasticSearch 제공된 주소 elasticsearch.hosts: ["http://ip:9200"]. 에 의해 bin/kibana시작. 설치는 여기에 자세히 비교적 간단 설명되지 않는다.

인덱스 작업

인덱스 만들기

사람 인덱스 예 만들기 인덱스를 생성하고, 필수가 아닌 경우 메인 데모 어떤 매개 변수를 설정할 수있는 복사본의 수에 대한 단편의 수 number_of_replicas 인덱스로서 number_of_shards.

PUT /person
{
  "mappings" : { 
   "properties": {
     "name" : {
        "type" : "text",
        "fields" : {
          "keyword" : {
            "type" : "keyword",
            "ignore_above" : 256  // 长度超过ignore_above设定的值,不会被索引或存储
          }
        }
      }
   }
  },
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 1
  }
}

실행 결과 :

쿼리 색인

인덱스 정보 쿼리를 사용 요청 방법을 GET :

GET /person

결과로 돌아 가기

색인 삭제

사용하여 삭제 요청 방법 :

# 删除 person 索引
DELETE /person

# 删除全部索引
DELETE /_all

# 通配符删除
DELETE /person*

매핑 작업

사람 인덱스 매핑을 조회합니다 :

GET /person/_mapping

向 person 索引中添加 remark 字段,之前 mapping 中的 name 不会被删除,。

POST /person/_mapping
{
  "properties" : {
      "remark2" : {
        "type" : "text",
        "fields" : {
        "keyword" : {
          "type" : "keyword",
          "ignore_above" : 256
        }
      }
    }
  }
}

文档操作

添加文档

添加文档有两种方式,第一种就是使用指定索引的 type 添加文档,7.x开始,type 指定只能是 _doc 值,同时也是不支持多 type 的(ps:之前使用type主要用来将索引逻辑分区)。第二种就是使用 _create 进行创建数据。

index 方式添加文档

使用_doc API向 person 中添加文档:

PUT /person/_doc/1
{
  "name":"ytao",
  "blog":"公众号 ytao",
  "remark":"https://ytao.top"
}

添加文档后返回的数据:

上面命令执行过程,如果索引或 mapping 不存在,都会自动创建。这里的 id 我们也可以自动生成,但是请求不能使用 PUT 方式,要改为 POST 方式。

POST /person/_doc/
{
  "name":"ytao",
  "blog":"公众号 ytao",
  "remark":"https://ytao.top"
}

如果上面我们插入 id 为 1 的文档重复执行,那么会先删除掉旧的文档,再引用新的文档,并且所对应的_version版本号值会较之前的 +1。

create 方式添加文档

使用_create API向 person 添加文档:

PUT /person/_create/2
{
  "name":"yangtao",
  "blog":"ytao's blog",
  "remark":"coder"
}

这里 id 必须指明,否则添加失败,并且文档中已存在的 id 不能进行添加。

获取和查询文档

根据 id 获取文档

使用 GET 获取文档:

GET /person/_doc/1

返回数据中:

根据字段进行查询

使用_search API进行查询,这里暂时不做深入讲解。
查询 name 为 ytao 的文档,并且通过from=0&size=2分页查询。

# q 为查询参数,查询的字段和值用 : 进行分割
GET /person/_search?q=name:ytao&from=0&size=2

返回结果:

更新文档

更新文档使用 _update API进行更新。更新内容必须包含在doc。更新对源数据只能是添加或修改字段,这也是和使用_doc添加数据的区别,不是通过删除旧的文档进行更新的。

POST /person/_update/1
{
  "doc":{
    "blog":"ytao's blog"
  }
}

删除文档

文档删除使用 DELETE 请求,然后指定 id:

DELETE /person/_doc/1

批量操作文档

批量处理可以一次请求中处理多个任务,使用_bulk API进行。
下面就以索引添加方式添加一个文档到索引中,然后更新文档中 blog 字段为例。

POST _bulk
{"index":{"_index":"person", "_id":1}}
{"name":"ytao","blog":"公众号 ytao","remark":"https://ytao.top"}
{"update":{"_index":"person", "_id":1}}
{"doc":{"blog":"ytao's blog"}}

返回结果中,按每一个操作分别返回结果信息,当其中有请求错误时,不会影响其他请求操作。

批量获取文档

批量获取文档,使用_mget API进行,通过一次指定多个文档 id,进行请求。
例如在 person 索引中获取 id 为 1,2 的文档:

POST _mget
{
  "docs":[
    {
      "_index": "person",
      "_id": 1
    },
    {
      "_index": "person",
      "_id": 2
    } 
  ]
}

返回结果:

批量查询文档

批量查询文档,使用_msearch API进行,将多个查询整合到一个请求中。
下面就是分别在指定索引中查询的不同条件。

GET /person/_msearch
{"index":"person"}
{"query":{"match":{"blog":"ytao's blog"}}}
{"index":"person"}
{"query":{"match":{"remark":"coder"}}}

返回结果:

总结

本文对 ElasticSearch 的最基础的,常用的操作 API,这里已经介绍完毕。要想学习 ElasticSearch,建议从 API 操作入手,千万别上来就直接拿着代码就干,虽然各语言都已提供相关工具包,但是这些封装也都是基于 API 上的。更多的 API 在今后文章涉及时再进行分析。

更多 API 相关信息,建议查阅官网,这里有比较详细的介绍:
https://www.elastic.co/guide/en/elasticsearch/reference/7.5/rest-apis.html



个人博客: https://ytao.top
关注公众号 【ytao】,更多原创好文
我的公众号

추천

출처www.cnblogs.com/ytao-blog/p/12041856.html