网站推送怎么做,微信公众号流程图,泸州市规划建设局网站,wordpress笔记搭建自己的搜索引擎——oh-my-search使用
使用elasticsearch和search-ui搭建自己的搜索引擎#xff0c;快速查找资源和文件。如果对代码感兴趣#xff0c;相关代码已在github上开源#xff0c;欢迎fork代码。
搭建elasticsearch
先搭建eleasticsearch再搭建kibana
搭建e…搭建自己的搜索引擎——oh-my-search使用
使用elasticsearch和search-ui搭建自己的搜索引擎快速查找资源和文件。如果对代码感兴趣相关代码已在github上开源欢迎fork代码。
搭建elasticsearch
先搭建eleasticsearch再搭建kibana
搭建elasticsearch
mkdir elasticsarch
cd elasticsarch
mkdir -p /es/plugins
mkdir -p /es/data
mkdir -p /es/logs
mkdir -p /es/config
vim docker-compose.yml编辑docker-compose.yml文件内容如下
version: 3
services:elasticsearch:image: elasticsearch:8.9.0container_name: elasticsearchprivileged: trueenvironment:- cluster.nameelasticsearch #设置集群名称为elasticsearch- discovery.typesingle-node #以单一节点模式启动- ES_JAVA_OPTS-Xms512m -Xmx1096m #设置使用jvm内存大小- bootstrap.memory_locktruevolumes:- ./es/plugins:/usr/share/elasticsearch/plugins #插件文件挂载- ./es/data:/usr/share/elasticsearch/data:rw #数据文件挂载- ./es/logs:/usr/share/elasticsearch/logs:rw- ./es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.ymlports:- 9200:9200- 9300:9300deploy:resources:limits:cpus: 2memory: 1000Mreservations:memory: 200M其中./es/config/elasticsearch.yml的内容如下可按需修改
cluster.name: elasticsearch
network.host: 0.0.0.0启动elasticsearch
配置完成后启动elasticsearch。
docker-compose --compatibility up -d同时进入elasticsearch容器内部修改密码。
# 进入容器内部
docker exec -it elasticsearch bash
# 修改密码
elasticsearch4c37fcfb6f13:~$ ls
LICENSE.txt NOTICE.txt README.asciidoc bin config data jdk lib logs modules plugins
elasticsearch4c37fcfb6f13:~$ bin/elasticsearch-reset-password --username elastic -i
bin/elasticsearch-reset-password --username kibana -i搭建kibana
mkdir kibana
cd kibana
vim docker-compose.ymldocker-compose.yml的内容如下
version: 3
services:kibana:image: kibana:8.9.0container_name: kibanavolumes:- ./kibana.yml:/usr/share/kibana/config/kibana.ymlports:- 5601:5601deploy:resources:limits:cpus: 1memory: 1000Mreservations:memory: 200Mkibana.yml的文件内容如下可按需修改
elasticsearch.hosts: http://elasticsearch:9200
elasticsearch.username: kibana
elasticsearch.password: kibana
server.host: 0.0.0.0
server.name: kibana
xpack.monitoring.ui.container.elasticsearch.enabled: true
i18n.locale: zh-CN启动kibana
docker-compose --compatibility up -d同时搭建eleasticsearch和kibana
使用docker-compose启动elasticsearch
编辑docker-compose.yml文件内容如下
version: 3
services:elasticsearch:image: elasticsearch:8.9.0container_name: elasticsearchprivileged: trueenvironment:- cluster.nameelasticsearch #设置集群名称为elasticsearch- discovery.typesingle-node #以单一节点模式启动- ES_JAVA_OPTS-Xms512m -Xmx1096m #设置使用jvm内存大小- bootstrap.memory_locktruevolumes:- ./es/plugins:/usr/local/dockercompose/elasticsearch/plugins #插件文件挂载- ./es/data:/usr/local/dockercompose/elasticsearch/data:rw #数据文件挂载- ./es/logs:/usr/local/dockercompose/elasticsearch/logs:rwports:- 9200:9200- 9300:9300deploy:resources:limits:cpus: 2memory: 1000Mreservations:memory: 200Mkibana:image: kibana:8.9.0container_name: kibanadepends_on:- elasticsearch #kibana在elasticsearch启动之后再启动volumes:- ./es/config/kibana:/usr/share/kibana/config/kibana.yamlports:- 5601:5601其中kibana.yaml的内容如下
elasticsearch.hosts: http://elasticsearch:9200
server.host: 0.0.0.0
server.name: kibana
xpack.monitoring.ui.container.elasticsearch.enabled: true
i18n.locale: zh-CN进入elasticsearch终端修改elasticsearch密码
# 进入容器内部
docker exec -it elasticsearch bash
# 修改密码
elasticsearch4c37fcfb6f13:~$ ls
LICENSE.txt NOTICE.txt README.asciidoc bin config data jdk lib logs modules plugins
elasticsearch4c37fcfb6f13:~$ bin/elasticsearch-reset-password --username elastic -i
WARNING: Owner of file [/usr/share/elasticsearch/config/users] used to be [root], but now is [elasticsearch]
WARNING: Owner of file [/usr/share/elasticsearch/config/users_roles] used to be [root], but now is [elasticsearch]
This tool will reset the password of the [elastic] user.
You will be prompted to enter the password.
Please confirm that you would like to continue [y/N]yEnter password for [elastic]:
Re-enter password for [elastic]:
Password for the [elastic] user successfully reset.
elasticsearch4c37fcfb6f13:~$生成kibana的token
# 重启容器然后进入容器内部生成kibana的token
docker exec -it elasticsearch bash
elasticsearch4c37fcfb6f13:~$ bin/elasticsearch-create-enrollment-token -s kibana获取kibana验证码
# 在浏览器打开http://ip:5601,粘贴kibana的token然后进入kibana容器内部获取验证码
sudo docker exec -it kibana bash
kibanafce2ab8aec1e:~$ ls
LICENSE.txt NOTICE.txt README.txt bin config data logs node node_modules package.json packages plugins src x-pack
kibanafce2ab8aec1e:~$ bin/kibana-verification-code
Your verification code is: 042 943 搭建search-ui
创建search-ui项目
npm install -g create-react-app
# 创建名为doc_index的项目
create-react-app doc_index --use-npm
cd doc_index
npm install --save elastic/react-search-ui elastic/search-ui-app-search-connector elastic/search-ui-elasticsearch-connector启动search-ui项目
npm start创建api_key
登录kibana进入到/app/management/security/api_keys/创建一个api_key并记录api_key.
创建索引
登录kibana的dev_tools创建和设置索引
# 创建索引
PUT /doc_index# 设置索引属性
PUT /doc_index/_mapping
{properties:{title:{type:text,fields:{suggest: {type: search_as_you_type}}},category:{type:text},url:{type:text}}
}# 设置查询返回的最大条数
PUT /doc_index/_settings
{index : {max_result_window: 500000}
}导入数据
# 插入单条数据
POST /doc_index/_bulk
{index:{}}
{title:test,category:test,url:http://localhost:3000}## 批量插入
POST /doc_index/_bulk
{index:{}}
{title:test2,category:test,url:http://localhost:3001}
{index:{}}
{title:dir,category:test,url:http://localhost:3002}
{index:{}}
{title:ddssd,category:test,url:http://localhost:3003}
{index:{}}
{title:测试,category:test,url:http://localhost:3004}当然也可以用命令行插入如使用curl命令
curl --username username:password -H Content-Type: application/json -XPOST 192.168.56.130:9200/bank/account/_bulk?pretty --data-binary test.json其中–username指定elasticsearch的用户名和密码test.json的内容如下
{index:{}}
{title:test2,category:test,url:http://localhost:3001}
{index:{}}
{title:dir,category:test,url:http://localhost:3002}
{index:{}}
{title:ddssd,category:test,url:http://localhost:3003}
{index:{}}
{title:测试,category:test,url:http://localhost:3004}完整数据插入命令如下 PUT /doc_index/_mapping
{properties:{title:{type:text,fields:{suggest: {type: search_as_you_type}}},category:{type:text},url:{type:text}}
}PUT /doc_index/_settings
{index : {max_result_window: 500000}
}GET /doc_index/_searchPOST /doc_index/_bulk
{index:{}}
{title:test2,category:test,url:http://localhost:3001}
{index:{}}
{title:dir,category:test,url:http://localhost:3002}
{index:{}}
{title:ddssd,category:test,url:http://localhost:3003}
{index:{}}
{title:测试,category:test,url:http://localhost:3004}完善search-ui
search-ui下载下来之后还没有绑定数据此时还需要修改app.js来进行适配。
app.js需更改成
// Step #1, import statements
import React from react;
// 这里需要注意app和网页的接口名称不一样
import ElasticsearchAPIConnector from elastic/search-ui-elasticsearch-connector;
import {PagingInfo,ResultsPerPage,Paging,SearchProvider,Results,SearchBox,Sorting
} from elastic/react-search-ui;
import { Layout } from elastic/react-search-ui-views;
import elastic/react-search-ui-views/lib/styles/styles.css;// Step #2, The connector
const connector new ElasticsearchAPIConnector({host: http://elasticsearch:9200, // elasticsearch的地址apiKey: WjUxNVpZc0JTb3pYN2J6cEdqRHQ6R3Y0all0R1dTai1LSjhqMGc5THFVdw, // elasticsearch 的登录秘钥在kibana上生成index: doc_index // 要访问的索引的地址
});// Step #3: Configuration options
const configurationOptions {searchQuery: {search_fields: {title: {weight: 3},url: {},category: {}},result_fields: {title: {snippet: {}},url: {snippet: {}},category: {snippet: {}}}},apiConnector: connector,alwaysSearchOnInitialLoad: true
};// step4 show result
export default function App() {return (SearchProvider config{configurationOptions}div classNameAppLayoutheader{SearchBox /}// 要展示的标题和标题对应的连接bodyContent{Results titleFieldtitle urlFieldurl /}bodyHeader{PagingInfo /ResultsPerPage //}bodyFooter{Paging /}//div/SearchProvider);
}还可以修改一下public下面的title标签修改成自己的项目标签。如
titledoc_index/title