升级

升级

es 平滑升级,从1.7升级到5.5或6.x

Elasticsearchfanmo3yuan 回复了问题 • 4 人关注 • 3 个回复 • 540 次浏览 • 2019-01-12 10:55 • 来自相关话题

es6.5.4 单节点扩展到集群问题

Elasticsearchzqc0512 回复了问题 • 5 人关注 • 4 个回复 • 386 次浏览 • 2019-01-11 09:17 • 来自相关话题

Day 21 - ECE 版本升级扫雷实战

ElasticsearchBen_Wu 发表了文章 • 1 个评论 • 521 次浏览 • 2018-12-21 10:50 • 来自相关话题

Elastic Cloud Enterprise 出来也有一年多的时间了。对于这类的开源软件企业版本,基本都是在可管理性和稳定性上面下功夫。但是新产品免不了需要经历一下bug的打磨才会变得成熟。 下面分享的这个案例是当我们在把集群从5.4.1 升级到5.6.12 的过程中,遇到节点关闭受阻,升级不完整等情景。以及对应的处理方法。 首先在ECE中,版本是通过stack的方式管理  
QQ20181221-104539@2x.png
Ref : https://www.elastic.co/guide/e ... .html 这些版本都是以docker images的形式存储
QQ20181221-104619@2x.png
因此,ECE根据不同的版本,然后选择对应的docker image就可以创建一个节点了. 那么升级的过程就可以简单分成几个步骤 1.exclude准备升级的节点。 2.停止节点ES进程,更换container 版本。 3.重新启动节点,加入集群。 4.在其他节点上重复以上流程。 在这个过程中, 实际使用的时候发现有一些需要注意的雷区. 扫雷一:使用UI触发升级,必须保证集群没有自定义插件和bundles ECE 里面的集群操作是通过plan来控制的
QQ20181221-104650@2x.png
任何的集群操作最终都会生成一个plan的diff。如上图,把集群从5.4.1 升级到 5.6.12 会产生以上diff. 正常情况下是没有问题的. 如果集群配置了自定义bundles, 比如LDAP bundles, ref:https://www.elastic.co/guide/e ... .html 那么在集群的plan里面就会存在这么一段配置
QQ20181221-104718@2x.png
那么当我们在按下升级按钮的时候
QQ20181221-104744@2x.png
ECE 只在plan中修改了集群大版本的配置, 但是并没有修改自定义bundles中的版本号(仍然是5.4.1). 在这种情况下去执行升级,会直接产生报错.
QQ20181221-104810@2x.png
界面上没有显示原因, 但是这是因为plan里面大版本和bundle中的版本不一致,然后会导致新增的节点无法启动. 于是ECE 就认为集群升级失败了. 解决方法是手动编辑plan,把自定义bundles中的版本号改成和集群版本一致
QQ20181221-104848@2x.png
然后使用ECE 提供的一种手动使用plan进行集群升级的方式进行升级. 扫雷二:节点无法关闭 ECE 控制container 是通过一个叫做 constructor的服务。constructor 通过接收集群的更改需求,制定具体的更改计划与步骤,指导allocator对container进行操作。同时也负责保证集群高可靠性,通过Availability Zone的数量在不同的AZ上面部署节点。 当Allocator接受到关闭container命令的时候,会尝试去关闭container,如果container处于一个阻塞状态无法响应, 那么关闭命令无法执行成功。这个时候constructor会等待节点关闭,但是allocator又认为节点已经接受到关闭命令了。又或者constructor发送给allocator的过程中网络丢包, 这个时候allocator 没有正确接受关闭container的命令. 整个升级进程就卡住了。 这种情况十分罕见,通常发现一个container如果处于”正在关闭”时间太久了, 那么通常就是中间的通信出现问题了.
QQ20181221-104926@2x.png
解决办法是可以通过手动停止container, 在对应的allocator上面找到container,使用 docker stop <container_name> 停止container,这样可以出发allocator更新container的健康状态,上报这个container已经关闭了, 从而打通流程并执行下一步。 扫雷三: 多版本并存 如果使用上面的方式强行关闭docker container, 虽然可以让升级进程继续进行下去. 但是被手动关闭的节点会保留原来的版本。于是在升级后查看各个节点的版本,会发现部分节点是5.4.1, 部分是5.6.12. 因为节点是强制关闭的, ECE直接认为节点已经完成升级,并重新启动这个container. 而在这个处理中,跳过了升级docker image的一步. 为什么不是生成一个新的container呢? 因为从plan里面可以看到
QQ20181221-104951@2x.png
在默认情况下, ECE 处理版本升级是使用rolling 策略 Ref: https://www.elastic.co/guide/e ... .html 在这个策略下,ECE会停止当前container并直接修改重启。 如果ECE集群容量允许, 可以改成grow_and_shrink 策略, 这样ECE 会创建新的container并且销毁旧的container, 避免集群出现多版本. 如果出现了多版本的集群,可以通过更改集群任意一个配置来触发 grow_and_shrink 同样可以使到版本回归一致. 总结来说ECE 在版本升级方面还是有很多需要改进的地方. 对于ECE用户再说在使用ECE的版本升级功能的时候主要有以下建议 1. 自己学会手动修改plan. 这也是每一个ECE support engineer 都会干的事情. 2.如果集群容量允许,尽量使用 grow_and_shrink的策略来进行集群操作.  

Elasticsearch 6.2.2集群如何无损升级到6.3.0?

Elasticsearchrochy 回复了问题 • 2 人关注 • 1 个回复 • 799 次浏览 • 2018-09-21 10:07 • 来自相关话题

现在用的es5.1.1的,也有5.5.1的,两个集群,两个版本,如何平滑升级

回复

Elasticsearchxiongge.club 发起了问题 • 1 人关注 • 0 个回复 • 490 次浏览 • 2018-06-22 13:31 • 来自相关话题

终于把2升到6了,分享一下

Elasticsearchjinleileiking 发表了文章 • 0 个评论 • 510 次浏览 • 2018-04-12 17:32 • 来自相关话题

https://jinleileiking.github.io/post/es6/   希望 wood 大佬能点评一下 @kennywu76
https://jinleileiking.github.io/post/es6/   希望 wood 大佬能点评一下 @kennywu76

大规模数据es 1.x如何迁移升级到5.x

Elasticsearchlaoyang360 回复了问题 • 5 人关注 • 2 个回复 • 1379 次浏览 • 2018-02-11 19:47 • 来自相关话题

elasticsearch5.2.1 rolloing upgrade到5.6.5遇到小坑

回复

Elasticsearcharterforyou 发起了问题 • 1 人关注 • 0 个回复 • 812 次浏览 • 2018-01-12 12:27 • 来自相关话题

请教问题,es在重新分配shard的时候,发生了什么?

回复

Elasticsearchluohuanfeng 发起了问题 • 1 人关注 • 0 个回复 • 1116 次浏览 • 2017-12-19 15:56 • 来自相关话题

社区支持 Markdown 编辑器

默认分类medcl 发表了文章 • 4 个评论 • 1802 次浏览 • 2017-11-10 17:36 • 来自相关话题

为了改善大家的创作体验,提高大家的写作和分享热情!😁,经过两天的不懈奋斗,终于把 Markdown 编辑器搬上来了。 目前只支持文章的发布,可以通过切换编辑器来选择 Markdown 编辑模式。 希望不要再以编辑器作为理由发只有链接的文章了。 😁😁😎😎😎😎😁😁😀😀😀

  • 支持 Github 风格的 Markdown 格式
  • 支持本站附件功能
  • 支持 emoj 符号
  • 支持自动的页面导航
  • 以前的文章可再次编辑,切换 Markdown 模式然后修改保存

如何使用?

  1. 点击【发起】,选择文章
  2. 切换绿色按钮,将编辑器切换到 Markdown,然后在文本框内输入 Markdown 格式的内容即可。

在线 Markdown 脚本编辑预览工具:https://elasticsearch.cn/static/js/editor/markdown/


以下为样式测试参考,忽略其意义。

1510307393004.jpg

----------- 常用格式-----------------


# 标题1
## 标题2
### 标题3
#### 标题4
##### 标题5
###### 标题6
超大标题   //等于号写于文字下方
===
标题      //同超大标题
---

`短代码`
_ 注:长代码块,用三个: `  _

> This is the first level of quoting.
>
> > This is nested blockquote.
>
> Back to the first level.

* Red
* Green
* Blue

- Red
- Green
- Blue

+ Red
+ Green
+ Blue

1. 这是第一个
1. 这是第二个
1. 这是第三个

* * *
***
*****
- - -
---

[markdown-syntax](http://daringfireball.net/projects/markdown/syntax)

[id]: http://example.com/  "Optional Title Here"
This is [an example][id] reference-style link.

*内容*
**内容**
_内容_
__内容__

![这是张外链图片](https://static-www.elastic.co/assets/bltbfcd44f1256d8c88/blog-swifttype-thumb.jpg?q=845)

<http://elastic.co/>

<info@elastic.o>

    四个空格
    一个tab

----------- 样式预览-----------------

标题1

标题2

标题3

标题4

标题5
标题6

超大标题 //等于号写于文字下方

标题 //同超大标题

短代码

This is the first level of quoting.

This is nested blockquote.

Back to the first level.

  • Red
  • Green
  • Blue

  • Red
  • Green
  • Blue

  • Red
  • Green
  • Blue
  1. 这是第一个
  2. 这是第二个
  3. 这是第三个





markdown-syntax

This is an example reference-style link.

内容 内容 内容 内容

这是张外链图片

http://elastic.co/

info@elastic.o

四个空格
一个tab

https://github.com/infinitbyte/gopa 的 README 内容


What a Spider!

GOPA, A Spider Written in Go.

Travis Go Report Card Coverage Status Join the chat at https://gitter.im/infinitbyte/gopa

Goal

  • Light weight, low footprint, memory requirement should < 100MB
  • Easy to deploy, no runtime or dependency required
  • Easy to use, no programming or scripts ability needed, out of box features

Screenshoot

What a Spider! GOPA Spider!

How to use

Setup

First of all, get it, two opinions: download the pre-built package or compile it yourself.

Download Pre Built Package

Go to Release or Snapshot page, download the right package for your platform.

Note: Darwin is for Mac

Compile The Package Manually

So far, we have:

gopa, the main program, a single binary.
config/, elasticsearch related scripts etc.
gopa.yml, main configuration for gopa.

Optional Config

By default, Gopa works well except indexing, if you want to use elasticsearch as indexing, follow these steps:

  • Create a index in elasticsearch with script config/gopa-index-mapping.sh

    Example
    curl -XPUT "http://localhost:9200/gopa-index" -H 'Content-Type: application/json' -d'
    {
    "mappings": {
    "doc": {
      "properties": {
        "host": {
            "type": "keyword",
            "ignore_above": 256
        },
        "snapshot": {
          "properties": {
            "bold": {
              "type": "text"
            },
            "url": {
              "type": "keyword",
              "ignore_above": 256
            },
            "content_type": {
              "type": "keyword",
              "ignore_above": 256
            },
            "file": {
              "type": "keyword",
              "ignore_above": 256
            },
            "h1": {
              "type": "text"
            },
            "h2": {
              "type": "text"
            },
            "h3": {
              "type": "text"
            },
            "h4": {
              "type": "text"
            },
            "hash": {
              "type": "keyword",
              "ignore_above": 256
            },
            "id": {
              "type": "keyword",
              "ignore_above": 256
            },
            "images": {
              "properties": {
                "external": {
                  "properties": {
                    "label": {
                      "type": "text"
                    },
                    "url": {
                      "type": "keyword",
                      "ignore_above": 256
                    }
                  }
                },
                "internal": {
                  "properties": {
                    "label": {
                      "type": "text"
                    },
                    "url": {
                      "type": "keyword",
                      "ignore_above": 256
                    }
                  }
                }
              }
            },
            "italic": {
              "type": "text"
            },
            "links": {
              "properties": {
                "external": {
                  "properties": {
                    "label": {
                      "type": "text"
                    },
                    "url": {
                      "type": "keyword",
                      "ignore_above": 256
                    }
                  }
                },
                "internal": {
                  "properties": {
                    "label": {
                      "type": "text"
                    },
                    "url": {
                      "type": "keyword",
                      "ignore_above": 256
                    }
                  }
                }
              }
            },
            "path": {
              "type": "keyword",
              "ignore_above": 256
            },
            "sim_hash": {
              "type": "keyword",
              "ignore_above": 256
            },
            "lang": {
              "type": "keyword",
              "ignore_above": 256
            },
            "size": {
              "type": "long"
            },
            "text": {
              "type": "text"
            },
            "title": {
              "type": "text",
              "fields": {
                "keyword": {
                  "type": "keyword"
                }
              }
            },
            "version": {
              "type": "long"
            }
          }
        },
        "task": {
          "properties": {
            "breadth": {
              "type": "long"
            },
            "created": {
              "type": "date"
            },
            "depth": {
              "type": "long"
            },
            "id": {
              "type": "keyword",
              "ignore_above": 256
            },
            "original_url": {
              "type": "keyword",
              "ignore_above": 256
            },
            "reference_url": {
              "type": "keyword",
              "ignore_above": 256
            },
            "schema": {
              "type": "keyword",
              "ignore_above": 256
            },
            "status": {
              "type": "integer"
            },
            "updated": {
              "type": "date"
            },
            "url": {
              "type": "keyword",
              "ignore_above": 256
            }
          }
        }
      }
    }
    }
    }'

Note: Elasticsearch version should > v5.0

  • Enable index module in gopa.yml, update the elasticsearch's setting:
    - module: index
    enabled: true
    ui:
      enabled: true
    elasticsearch:
      endpoint: http://dev:9200
      index_prefix: gopa-
      username: elastic
      password: changeme

Start

Gopa doesn't require any dependencies, simply run ./gopa to start the program.

Gopa can be run as daemon(Note: Only available on Linux and Mac):

Example

➜  gopa git:(master) ✗ ./bin/gopa --daemon
  ________ ________ __________  _____
 /  _____/ \_____  \\______   \/  _  \
/   \  ___  /   |   \|     ___/  /_\  \
\    \_\  \/    |    \    |  /    |    \
 \______  /\_______  /____|  \____|__  /
        \/         \/                \/
[gopa] 0.10.0_SNAPSHOT
///last commit: 99616a2, Fri Oct 20 14:04:54 2017 +0200, medcl, update version to 0.10.0 ///

[10-21 16:01:09] [INF] [instance.go:23] workspace: data/gopa/nodes/0
[gopa] started.

Also run ./gopa -h to get the full list of command line options.

Example

➜  gopa git:(master) ✗ ./bin/gopa -h
  ________ ________ __________  _____
 /  _____/ \_____  \\______   \/  _  \
/   \  ___  /   |   \|     ___/  /_\  \
\    \_\  \/    |    \    |  /    |    \
 \______  /\_______  /____|  \____|__  /
        \/         \/                \/
[gopa] 0.10.0_SNAPSHOT
///last commit: 99616a2, Fri Oct 20 14:04:54 2017 +0200, medcl, update version to 0.10.0 ///

Usage of ./bin/gopa:
  -config string
        the location of config file (default "gopa.yml")
  -cpuprofile string
        write cpu profile to this file
  -daemon
        run in background as daemon
  -debug
        run in debug mode, wi
  -log string
        the log level,options:trace,debug,info,warn,error (default "info")
  -log_path string
        the log path (default "log")
  -memprofile string
        write memory profile to this file
  -pidfile string
        pidfile path (only for daemon)
  -pprof string
        enable and setup pprof/expvar service, eg: localhost:6060 , the endpoint will be: http://localhost:6060/debug/pprof/ and http://localhost:6060/debug/vars

Stop

It's safety to press ctrl+c stop the current running Gopa, Gopa will handle the rest,saving the checkpoint, you may restore the job later,the world is still in your hand.

If you are running Gopa as daemon, you may stop it like this:

 kill -QUIT `pgrep gopa`

Configuration

UI

  • Search Console http://127.0.0.1:9001/
  • Admin Console http://127.0.0.1:9001/admin/

API

  • TBD

Contributing

You are sincerely and warmly welcomed to play with this project, from UI style to core features, or just a piece of document, welcome! let's make it better.

License

Released under the Apache License, Version 2.0 .

Also XSS Test

alert('XSS test');

elasticsearch 1.x到2.x版本的升级,出现冲突问题

回复

Elasticsearchfishman 发起了问题 • 1 人关注 • 0 个回复 • 2656 次浏览 • 2016-09-10 16:37 • 来自相关话题

我现在是1.2.1,想升级到1.4版本

Elasticsearchxcw931924821 回复了问题 • 4 人关注 • 3 个回复 • 4893 次浏览 • 2015-04-06 17:07 • 来自相关话题

es 平滑升级,从1.7升级到5.5或6.x

回复

Elasticsearchfanmo3yuan 回复了问题 • 4 人关注 • 3 个回复 • 540 次浏览 • 2019-01-12 10:55 • 来自相关话题

es6.5.4 单节点扩展到集群问题

回复

Elasticsearchzqc0512 回复了问题 • 5 人关注 • 4 个回复 • 386 次浏览 • 2019-01-11 09:17 • 来自相关话题

Elasticsearch 6.2.2集群如何无损升级到6.3.0?

回复

Elasticsearchrochy 回复了问题 • 2 人关注 • 1 个回复 • 799 次浏览 • 2018-09-21 10:07 • 来自相关话题

现在用的es5.1.1的,也有5.5.1的,两个集群,两个版本,如何平滑升级

回复

Elasticsearchxiongge.club 发起了问题 • 1 人关注 • 0 个回复 • 490 次浏览 • 2018-06-22 13:31 • 来自相关话题

大规模数据es 1.x如何迁移升级到5.x

回复

Elasticsearchlaoyang360 回复了问题 • 5 人关注 • 2 个回复 • 1379 次浏览 • 2018-02-11 19:47 • 来自相关话题

elasticsearch5.2.1 rolloing upgrade到5.6.5遇到小坑

回复

Elasticsearcharterforyou 发起了问题 • 1 人关注 • 0 个回复 • 812 次浏览 • 2018-01-12 12:27 • 来自相关话题

请教问题,es在重新分配shard的时候,发生了什么?

回复

Elasticsearchluohuanfeng 发起了问题 • 1 人关注 • 0 个回复 • 1116 次浏览 • 2017-12-19 15:56 • 来自相关话题

elasticsearch 1.x到2.x版本的升级,出现冲突问题

回复

Elasticsearchfishman 发起了问题 • 1 人关注 • 0 个回复 • 2656 次浏览 • 2016-09-10 16:37 • 来自相关话题

我现在是1.2.1,想升级到1.4版本

回复

Elasticsearchxcw931924821 回复了问题 • 4 人关注 • 3 个回复 • 4893 次浏览 • 2015-04-06 17:07 • 来自相关话题

Day 21 - ECE 版本升级扫雷实战

ElasticsearchBen_Wu 发表了文章 • 1 个评论 • 521 次浏览 • 2018-12-21 10:50 • 来自相关话题

Elastic Cloud Enterprise 出来也有一年多的时间了。对于这类的开源软件企业版本,基本都是在可管理性和稳定性上面下功夫。但是新产品免不了需要经历一下bug的打磨才会变得成熟。 下面分享的这个案例是当我们在把集群从5.4.1 升级到5.6.12 的过程中,遇到节点关闭受阻,升级不完整等情景。以及对应的处理方法。 首先在ECE中,版本是通过stack的方式管理  
QQ20181221-104539@2x.png
Ref : https://www.elastic.co/guide/e ... .html 这些版本都是以docker images的形式存储
QQ20181221-104619@2x.png
因此,ECE根据不同的版本,然后选择对应的docker image就可以创建一个节点了. 那么升级的过程就可以简单分成几个步骤 1.exclude准备升级的节点。 2.停止节点ES进程,更换container 版本。 3.重新启动节点,加入集群。 4.在其他节点上重复以上流程。 在这个过程中, 实际使用的时候发现有一些需要注意的雷区. 扫雷一:使用UI触发升级,必须保证集群没有自定义插件和bundles ECE 里面的集群操作是通过plan来控制的
QQ20181221-104650@2x.png
任何的集群操作最终都会生成一个plan的diff。如上图,把集群从5.4.1 升级到 5.6.12 会产生以上diff. 正常情况下是没有问题的. 如果集群配置了自定义bundles, 比如LDAP bundles, ref:https://www.elastic.co/guide/e ... .html 那么在集群的plan里面就会存在这么一段配置
QQ20181221-104718@2x.png
那么当我们在按下升级按钮的时候
QQ20181221-104744@2x.png
ECE 只在plan中修改了集群大版本的配置, 但是并没有修改自定义bundles中的版本号(仍然是5.4.1). 在这种情况下去执行升级,会直接产生报错.
QQ20181221-104810@2x.png
界面上没有显示原因, 但是这是因为plan里面大版本和bundle中的版本不一致,然后会导致新增的节点无法启动. 于是ECE 就认为集群升级失败了. 解决方法是手动编辑plan,把自定义bundles中的版本号改成和集群版本一致
QQ20181221-104848@2x.png
然后使用ECE 提供的一种手动使用plan进行集群升级的方式进行升级. 扫雷二:节点无法关闭 ECE 控制container 是通过一个叫做 constructor的服务。constructor 通过接收集群的更改需求,制定具体的更改计划与步骤,指导allocator对container进行操作。同时也负责保证集群高可靠性,通过Availability Zone的数量在不同的AZ上面部署节点。 当Allocator接受到关闭container命令的时候,会尝试去关闭container,如果container处于一个阻塞状态无法响应, 那么关闭命令无法执行成功。这个时候constructor会等待节点关闭,但是allocator又认为节点已经接受到关闭命令了。又或者constructor发送给allocator的过程中网络丢包, 这个时候allocator 没有正确接受关闭container的命令. 整个升级进程就卡住了。 这种情况十分罕见,通常发现一个container如果处于”正在关闭”时间太久了, 那么通常就是中间的通信出现问题了.
QQ20181221-104926@2x.png
解决办法是可以通过手动停止container, 在对应的allocator上面找到container,使用 docker stop <container_name> 停止container,这样可以出发allocator更新container的健康状态,上报这个container已经关闭了, 从而打通流程并执行下一步。 扫雷三: 多版本并存 如果使用上面的方式强行关闭docker container, 虽然可以让升级进程继续进行下去. 但是被手动关闭的节点会保留原来的版本。于是在升级后查看各个节点的版本,会发现部分节点是5.4.1, 部分是5.6.12. 因为节点是强制关闭的, ECE直接认为节点已经完成升级,并重新启动这个container. 而在这个处理中,跳过了升级docker image的一步. 为什么不是生成一个新的container呢? 因为从plan里面可以看到
QQ20181221-104951@2x.png
在默认情况下, ECE 处理版本升级是使用rolling 策略 Ref: https://www.elastic.co/guide/e ... .html 在这个策略下,ECE会停止当前container并直接修改重启。 如果ECE集群容量允许, 可以改成grow_and_shrink 策略, 这样ECE 会创建新的container并且销毁旧的container, 避免集群出现多版本. 如果出现了多版本的集群,可以通过更改集群任意一个配置来触发 grow_and_shrink 同样可以使到版本回归一致. 总结来说ECE 在版本升级方面还是有很多需要改进的地方. 对于ECE用户再说在使用ECE的版本升级功能的时候主要有以下建议 1. 自己学会手动修改plan. 这也是每一个ECE support engineer 都会干的事情. 2.如果集群容量允许,尽量使用 grow_and_shrink的策略来进行集群操作.  

终于把2升到6了,分享一下

Elasticsearchjinleileiking 发表了文章 • 0 个评论 • 510 次浏览 • 2018-04-12 17:32 • 来自相关话题

https://jinleileiking.github.io/post/es6/   希望 wood 大佬能点评一下 @kennywu76
https://jinleileiking.github.io/post/es6/   希望 wood 大佬能点评一下 @kennywu76

社区支持 Markdown 编辑器

默认分类medcl 发表了文章 • 4 个评论 • 1802 次浏览 • 2017-11-10 17:36 • 来自相关话题

为了改善大家的创作体验,提高大家的写作和分享热情!😁,经过两天的不懈奋斗,终于把 Markdown 编辑器搬上来了。 目前只支持文章的发布,可以通过切换编辑器来选择 Markdown 编辑模式。 希望不要再以编辑器作为理由发只有链接的文章了。 😁😁😎😎😎😎😁😁😀😀😀

  • 支持 Github 风格的 Markdown 格式
  • 支持本站附件功能
  • 支持 emoj 符号
  • 支持自动的页面导航
  • 以前的文章可再次编辑,切换 Markdown 模式然后修改保存

如何使用?

  1. 点击【发起】,选择文章
  2. 切换绿色按钮,将编辑器切换到 Markdown,然后在文本框内输入 Markdown 格式的内容即可。

在线 Markdown 脚本编辑预览工具:https://elasticsearch.cn/static/js/editor/markdown/


以下为样式测试参考,忽略其意义。

1510307393004.jpg

----------- 常用格式-----------------


# 标题1
## 标题2
### 标题3
#### 标题4
##### 标题5
###### 标题6
超大标题   //等于号写于文字下方
===
标题      //同超大标题
---

`短代码`
_ 注:长代码块,用三个: `  _

> This is the first level of quoting.
>
> > This is nested blockquote.
>
> Back to the first level.

* Red
* Green
* Blue

- Red
- Green
- Blue

+ Red
+ Green
+ Blue

1. 这是第一个
1. 这是第二个
1. 这是第三个

* * *
***
*****
- - -
---

[markdown-syntax](http://daringfireball.net/projects/markdown/syntax)

[id]: http://example.com/  "Optional Title Here"
This is [an example][id] reference-style link.

*内容*
**内容**
_内容_
__内容__

![这是张外链图片](https://static-www.elastic.co/assets/bltbfcd44f1256d8c88/blog-swifttype-thumb.jpg?q=845)

<http://elastic.co/>

<info@elastic.o>

    四个空格
    一个tab

----------- 样式预览-----------------

标题1

标题2

标题3

标题4

标题5
标题6

超大标题 //等于号写于文字下方

标题 //同超大标题

短代码

This is the first level of quoting.

This is nested blockquote.

Back to the first level.

  • Red
  • Green
  • Blue

  • Red
  • Green
  • Blue

  • Red
  • Green
  • Blue
  1. 这是第一个
  2. 这是第二个
  3. 这是第三个





markdown-syntax

This is an example reference-style link.

内容 内容 内容 内容

这是张外链图片

http://elastic.co/

info@elastic.o

四个空格
一个tab

https://github.com/infinitbyte/gopa 的 README 内容


What a Spider!

GOPA, A Spider Written in Go.

Travis Go Report Card Coverage Status Join the chat at https://gitter.im/infinitbyte/gopa

Goal

  • Light weight, low footprint, memory requirement should < 100MB
  • Easy to deploy, no runtime or dependency required
  • Easy to use, no programming or scripts ability needed, out of box features

Screenshoot

What a Spider! GOPA Spider!

How to use

Setup

First of all, get it, two opinions: download the pre-built package or compile it yourself.

Download Pre Built Package

Go to Release or Snapshot page, download the right package for your platform.

Note: Darwin is for Mac

Compile The Package Manually

So far, we have:

gopa, the main program, a single binary.
config/, elasticsearch related scripts etc.
gopa.yml, main configuration for gopa.

Optional Config

By default, Gopa works well except indexing, if you want to use elasticsearch as indexing, follow these steps:

  • Create a index in elasticsearch with script config/gopa-index-mapping.sh

    Example
    curl -XPUT "http://localhost:9200/gopa-index" -H 'Content-Type: application/json' -d'
    {
    "mappings": {
    "doc": {
      "properties": {
        "host": {
            "type": "keyword",
            "ignore_above": 256
        },
        "snapshot": {
          "properties": {
            "bold": {
              "type": "text"
            },
            "url": {
              "type": "keyword",
              "ignore_above": 256
            },
            "content_type": {
              "type": "keyword",
              "ignore_above": 256
            },
            "file": {
              "type": "keyword",
              "ignore_above": 256
            },
            "h1": {
              "type": "text"
            },
            "h2": {
              "type": "text"
            },
            "h3": {
              "type": "text"
            },
            "h4": {
              "type": "text"
            },
            "hash": {
              "type": "keyword",
              "ignore_above": 256
            },
            "id": {
              "type": "keyword",
              "ignore_above": 256
            },
            "images": {
              "properties": {
                "external": {
                  "properties": {
                    "label": {
                      "type": "text"
                    },
                    "url": {
                      "type": "keyword",
                      "ignore_above": 256
                    }
                  }
                },
                "internal": {
                  "properties": {
                    "label": {
                      "type": "text"
                    },
                    "url": {
                      "type": "keyword",
                      "ignore_above": 256
                    }
                  }
                }
              }
            },
            "italic": {
              "type": "text"
            },
            "links": {
              "properties": {
                "external": {
                  "properties": {
                    "label": {
                      "type": "text"
                    },
                    "url": {
                      "type": "keyword",
                      "ignore_above": 256
                    }
                  }
                },
                "internal": {
                  "properties": {
                    "label": {
                      "type": "text"
                    },
                    "url": {
                      "type": "keyword",
                      "ignore_above": 256
                    }
                  }
                }
              }
            },
            "path": {
              "type": "keyword",
              "ignore_above": 256
            },
            "sim_hash": {
              "type": "keyword",
              "ignore_above": 256
            },
            "lang": {
              "type": "keyword",
              "ignore_above": 256
            },
            "size": {
              "type": "long"
            },
            "text": {
              "type": "text"
            },
            "title": {
              "type": "text",
              "fields": {
                "keyword": {
                  "type": "keyword"
                }
              }
            },
            "version": {
              "type": "long"
            }
          }
        },
        "task": {
          "properties": {
            "breadth": {
              "type": "long"
            },
            "created": {
              "type": "date"
            },
            "depth": {
              "type": "long"
            },
            "id": {
              "type": "keyword",
              "ignore_above": 256
            },
            "original_url": {
              "type": "keyword",
              "ignore_above": 256
            },
            "reference_url": {
              "type": "keyword",
              "ignore_above": 256
            },
            "schema": {
              "type": "keyword",
              "ignore_above": 256
            },
            "status": {
              "type": "integer"
            },
            "updated": {
              "type": "date"
            },
            "url": {
              "type": "keyword",
              "ignore_above": 256
            }
          }
        }
      }
    }
    }
    }'

Note: Elasticsearch version should > v5.0

  • Enable index module in gopa.yml, update the elasticsearch's setting:
    - module: index
    enabled: true
    ui:
      enabled: true
    elasticsearch:
      endpoint: http://dev:9200
      index_prefix: gopa-
      username: elastic
      password: changeme

Start

Gopa doesn't require any dependencies, simply run ./gopa to start the program.

Gopa can be run as daemon(Note: Only available on Linux and Mac):

Example

➜  gopa git:(master) ✗ ./bin/gopa --daemon
  ________ ________ __________  _____
 /  _____/ \_____  \\______   \/  _  \
/   \  ___  /   |   \|     ___/  /_\  \
\    \_\  \/    |    \    |  /    |    \
 \______  /\_______  /____|  \____|__  /
        \/         \/                \/
[gopa] 0.10.0_SNAPSHOT
///last commit: 99616a2, Fri Oct 20 14:04:54 2017 +0200, medcl, update version to 0.10.0 ///

[10-21 16:01:09] [INF] [instance.go:23] workspace: data/gopa/nodes/0
[gopa] started.

Also run ./gopa -h to get the full list of command line options.

Example

➜  gopa git:(master) ✗ ./bin/gopa -h
  ________ ________ __________  _____
 /  _____/ \_____  \\______   \/  _  \
/   \  ___  /   |   \|     ___/  /_\  \
\    \_\  \/    |    \    |  /    |    \
 \______  /\_______  /____|  \____|__  /
        \/         \/                \/
[gopa] 0.10.0_SNAPSHOT
///last commit: 99616a2, Fri Oct 20 14:04:54 2017 +0200, medcl, update version to 0.10.0 ///

Usage of ./bin/gopa:
  -config string
        the location of config file (default "gopa.yml")
  -cpuprofile string
        write cpu profile to this file
  -daemon
        run in background as daemon
  -debug
        run in debug mode, wi
  -log string
        the log level,options:trace,debug,info,warn,error (default "info")
  -log_path string
        the log path (default "log")
  -memprofile string
        write memory profile to this file
  -pidfile string
        pidfile path (only for daemon)
  -pprof string
        enable and setup pprof/expvar service, eg: localhost:6060 , the endpoint will be: http://localhost:6060/debug/pprof/ and http://localhost:6060/debug/vars

Stop

It's safety to press ctrl+c stop the current running Gopa, Gopa will handle the rest,saving the checkpoint, you may restore the job later,the world is still in your hand.

If you are running Gopa as daemon, you may stop it like this:

 kill -QUIT `pgrep gopa`

Configuration

UI

  • Search Console http://127.0.0.1:9001/
  • Admin Console http://127.0.0.1:9001/admin/

API

  • TBD

Contributing

You are sincerely and warmly welcomed to play with this project, from UI style to core features, or just a piece of document, welcome! let's make it better.

License

Released under the Apache License, Version 2.0 .

Also XSS Test

alert('XSS test');