.net core 6 集成 elasticsearch 并 使用分词器

1、nuget包安装NEST、安装elasticsearch、kibana、ik分词器、拼音分词器

2、创建操作对象

cs 复制代码
//索引库
static string indexName = "testparticper";
//es 操作对象
ElasticClient elasticClient = new ElasticClient(new ConnectionSettings(new Uri("http://192.168.30.98:9200")));

3、创建一个索引库,字段使用ik分词器

cs 复制代码
#创建索引库
PUT /testparticper
{
  "mappings": {
    "properties": {
      "id": {
        "type": "keyword",
        "index": false
      },
      "name": {
        "type": "text",
        "analyzer": "ik_smart",
        "copy_to": "all"
      },
      "password": {
        "type": "text",
        "index": false
      },
      "all": {
        "type": "text",
        "analyzer": "ik_smart"
      }
    }
  }
}

4、创建需要的实体

cs 复制代码
/// <summary>
	/// 数据
	/// </summary>
	public class EsData
	{
		/// <summary>
		/// 名称
		/// </summary>
		public string name { get; set; } = string.Empty;
		/// <summary>
		/// ,密码
		/// </summary>
		public string password { get; set; } = string.Empty;
	}

	/// <summary>
	/// 分词器
	/// </summary>
    public class EsAnalyzer
    {
        /// <summary>
        /// 名称
        /// </summary>
        public string analyzer { get; set; } = string.Empty;
        /// <summary>
        /// ,密码
        /// </summary>
        public string text { get; set; } = string.Empty;
    }

5、创建两个使用的方法

ps:查询方法和直接使用语句一样

分词器方法没有找到现成使用方法,所有直接http调用,效果一致

cs 复制代码
GET /testparticper/_search
{
  "query": {
    "term": {
      "name": "名称"
    }
  }
}
cs 复制代码
/// <summary>
		/// 获取索引
		/// </summary>
		/// <returns></returns>
		public string GetIndex(string name)
		{
            ISearchResponse<EsData> esData = elasticClient.Search<EsData>(x =>
			{
				 return x.Index(indexName).Query(q => q.Term("name", name));
			});

			return esData.Documents.ToJson();
		}

        /// <summary>
        /// 分词器
        /// </summary>
        /// <returns></returns>
        public string Analyze(string body)
        {
			string str = new HttpTool().PostSendMessage("http://192.168.30.98:9200", "/_analyze", body);
            return str;
        }

6、es使用

cs 复制代码
/// <summary>
    /// es操作
    /// </summary>
    [Route("[controller]")]
    [StartAutoWrite]
    public class ElasticsearchController : Controller
    {
        [AutoWrite]
        ElasticsearchTool? elasticsearch;

        /// <summary>
        /// 查询
        /// </summary>
        /// <returns></returns>
        // GET: api/values
        [HttpGet("exist")]
        public string Exist([FromQuery] string name)
        {
            return elasticsearch?.GetIndex(name) ?? string.Empty;
        }

        /// <summary>
        /// 分词器
        /// </summary>
        /// <param name="esAnalyzer"></param>
        /// <returns></returns>
        [HttpPost("analyze")]
        public string Analyze([FromBody] EsAnalyzer esAnalyzer)
        {
            return elasticsearch?.Analyze(esAnalyzer.ToJson()) ?? string.Empty;
        }
    }

7、响应效果

相关推荐
Karoku0663 小时前
【企业级分布式系统】ELK优化
运维·服务器·数据库·elk·elasticsearch
戒哥一心搞钱4 小时前
.Net Core重要组件
.netcore
djk88884 小时前
.net6.0(.net Core)读取 appsettings.json 配置文件
json·.net·.netcore
刘梦凡呀4 小时前
.NET Core发布网站报错 HTTP Error 500.31
.netcore
上优5 小时前
uniapp 选择 省市区 省市 以及 回显
大数据·elasticsearch·uni-app
jwolf28 小时前
Elasticsearch向量搜索:从语义搜索到图搜图只有一步之遥
elasticsearch·搜索引擎·ai
你可以叫我仔哥呀9 小时前
ElasticSearch学习笔记三:基础操作(一)
笔记·学习·elasticsearch
hummhumm9 小时前
第 25 章 - Golang 项目结构
java·开发语言·前端·后端·python·elasticsearch·golang
java1234_小锋13 小时前
Elasticsearch中的节点(比如共20个),其中的10个选了一个master,另外10个选了另一个master,怎么办?
大数据·elasticsearch·jenkins
Elastic 中国社区官方博客13 小时前
Elasticsearch 开放推理 API 增加了对 IBM watsonx.ai Slate 嵌入模型的支持
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索