elasticsearch和kibana的一些问题汇总

1、先放一个docker-compose.yml

version: '3'
services:
  elasticsearch:
    image: elasticsearch:8.8.2
    container_name: elasticsearch
    environment:
      - "discovery.type=single-node"
      - "xpack.security.enabled=false"
			- "ES_JAVA_OPTS=-Xms4g -Xmx4g"
    ports:
      - "9200:9200"
      - "9300:9300"
	volumes:
      - /es/data:/usr/share/elasticsearch/data

  kibana:
    image: kibana:8.8.2
    container_name: kibana
    ports:
      - "5601:5601"
    environment:
      ELASTICSEARCH_URL: http://elasticsearch:9200
    depends_on:
      - elasticsearch

2、kibana中文汉化

进入kibana容器,进入到/usr/share/kibana/config,编辑kibana.yml,在最后一行新增

i18n.locale: "zh-CN"

如果没有安装vi和vim,可以先用docker cp拷贝出来,修改后再覆盖回去

//先cp出来
docker cp kibana:/usr/share/kibana/config/kibana.yml kibana.yml
//修改省略
//再覆盖回去
docker cp kibana.yml kibana:/usr/share/kibana/config/kibana.yml
//然后重启kibana容器

3、如果使用Elasticsearch-head的话,要处理跨域问题

这里我们需要修改elasticsearch的配置文件,同样的,我们docker cp出来修改

//先cp出来配置文件
docker cp elasticsearch:/usr/share/elasticsearch/config/elasticsearch.yml elasticsearch.yml
//然后在宿主机进行修改
vi elasticsearch.yml
//在文件最后增加两行配置
http.cors.enabled: true
http.cors.allow-origin: "*"

//保存后,再cp回去
docker cp elasticsearch.yml elasticsearch:/usr/share/elasticsearch/config/elasticsearch.yml
//然后重启elasticsearch容器

4、安装ik分词器插件

如果涉及到中文的分词,需要安装ik分词器,进入的elasticsearch容器,执行命令

bin/elasticsearch-plugin install https://get.infini.cloud/elasticsearch/analysis-ik/8.4.1

如果失败的话,版本号改为和elasticsearch一样的版本号。安装后需要重启elasticsearch

5、自定义的ik分词器

自动的分词,有时候会不符合我们的需求,这里就需要了配置自定义分词,先在外面建立一个自定义的分词的文件,假设名称叫cinema.dic ,这里注意,后缀必须为dic。文件很简单,把自定义的词,一行一个填进去就行了。然后执行docker cp命令,把文件传入容器

docker cp cinema.dic elasticsearch:/usr/share/elasticsearch/config/analysis-ik/cinema.dic

然后,我们还需要启用自定义的分词文件,这里我们先把这个文件拷贝出来

//先cp出来配置文件
docker cp elasticsearch:/usr/share/elasticsearch/config/analysis-ik/IKAnalyzer.cfg.xml IKAnalyzer.cfg.xml
//然后再宿主机修改
vi IKAnalyzer.cfg.xml
//配置这一行就行了
<entry key="ext_dict">cinema.dic</entry>
//保存后,再cp回去
docker cp IKAnalyzer.cfg.xml elasticsearch:/usr/share/elasticsearch/config/analysis-ik/IKAnalyzer.cfg.xml
//然后重启elasticsearch容器

因为每次修改这个文件,都需要重启ES,所以最好先收集一些再一并处理,或者在ES的低谷时期重启

6、安装拼音插件,支持到拼音的检索

bin/elasticsearch-plugin install https://get.infini.cloud/elasticsearch/analysis-pinyin/8.8.2

PS:下面再附注一些常用的查询语句,这些需要在kibana中执行

//检测分词的情况
GET _analyze
{
  "analyzer": "ik_max_word",
  "text":"E.T时代影城"
}
//获取doc详情
GET /cinemas/_doc/75776
//搜索关键词
POST /cinemas/_search
{
		"query": {
			"bool": {
				"should": [{
					"match": {
						"city_cinema_name": {
							"query": "乐多港",
							"boost": 2
						}
					}
				}, {
					"match": {
						"custom_search_name": {
							"query": "",
							"boost": 3
						}
					}
				}],
				"minimum_should_match": 1
			}
		},
		"highlight": {
		  "pre_tags": ["<strong>"],
      "post_tags": ["</strong>"],
      "fields": {
        "city_cinema_name": {},
        "city_name":{}
      }
    }
}

//增加索引字段
PUT /auto_quote_rule/_mapping
{
  "properties": {
    "issue_price": {
      "type": "keyword"
    }
  }
}

PUT /public_rule/_mapping
{
  "properties": {
    "tags": {
      "type": "keyword"
    },
    "tags_not": {
      "type": "keyword"
    }
  }
}

文章作者: Wind
本文链接:
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 雕刻时光
喜欢就支持一下吧