.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、响应效果

相关推荐
研究是为了理解1 小时前
Git Bash 常用命令
git·elasticsearch·bash
小兜全糖(xdqt)1 小时前
.netCore WebAPI中字符串加密与解密
.netcore
沪上百卉1 小时前
.NET Core 常用的三个生命周期
.netcore
晨欣5 小时前
Elasticsearch和Lucene之间是什么关系?(ChatGPT回答)
elasticsearch·chatgpt·lucene
筱源源11 小时前
Elasticsearch-linux环境部署
linux·elasticsearch
Elastic 中国社区官方博客21 小时前
释放专利力量:Patently 如何利用向量搜索和 NLP 简化协作
大数据·数据库·人工智能·elasticsearch·搜索引擎·自然语言处理
时光追逐者1 天前
C#/.NET/.NET Core学习路线集合,学习不迷路!
开发语言·学习·c#·asp.net·.net·.netcore·微软技术
Shenqi Lotus1 天前
ELK-ELK基本概念_ElasticSearch的配置
elk·elasticsearch
yeye198912241 天前
10-Query & Filtering 与多字符串多字段查询
elasticsearch
Narutolxy1 天前
精准优化Elasticsearch:磁盘空间管理与性能提升技巧20241106
大数据·elasticsearch·jenkins