mercalli使用教程(mercari使用教程)

Elasticsearch (ES) 和 MeiliSearch 是两种流行的搜索引擎,它们在功能、性能和使用场景上有一些显著的区别。以下是它们的一些对比:

1. 架构与设计

  • Elasticsearch:

    • 基于Apache Lucene构建,是一个分布式、RESTful风格的搜索和分析引擎。
    • 设计用于处理大规模的数据集,支持复杂的搜索需求和实时分析。
    • 提供强大的全文搜索、过滤、聚合和分析功能。
  • MeiliSearch:

    • 轻量级、开箱即用的搜索引擎,专注于速度和易用性。
    • 设计用于快速构建搜索体验,特别适合需要快速响应和简单设置的应用。
    • 提供自然语言处理和自动化的搜索排名。

2. 性能与扩展性

  • Elasticsearch:

    • 非常适合处理大规模数据和复杂查询。
    • 支持分片和多节点集群,以实现高可用性和水平扩展。
    • 适合需要高吞吐量和低延迟的企业级应用。
  • MeiliSearch:

    • 以速度和简便性为核心,适合中小规模的数据集。
    • 不支持分布式集群,通常用于单节点部署。
    • 适合需要快速开发和部署的项目。

3. 功能特性

  • Elasticsearch:

    • 提供复杂的查询DSL,支持多种搜索和分析功能。
    • 支持地理搜索、时间序列分析和机器学习等高级功能。
    • 丰富的插件和扩展生态系统。
  • MeiliSearch:

    • 提供简单的API,易于集成和使用。
    • 支持自动补全、拼写纠正和同义词处理。
    • 重点在于提供出色的默认搜索体验。

4. 使用场景

  • Elasticsearch:

    • 适用于需要处理大规模数据的场景,如日志分析、商业智能、实时监控等。
    • 常用于企业级应用,特别是需要复杂搜索和分析的场景。
  • MeiliSearch:

    • 适合需要快速实现搜索功能的场景,如电商网站、博客搜索等。
    • 适合开发者希望快速集成搜索功能,而不需要复杂配置的情况。

5. 社区与支持

  • Elasticsearch:

    • 拥有庞大的用户社区和丰富的文档资源。
    • 商业支持由Elastic公司提供。
  • MeiliSearch:

    • 也有活跃的社区支持,文档清晰易懂。
    • 提供商业支持和托管服务选项。

选择使用哪个搜索引擎,通常取决于你的具体需求、数据规模和技术栈。如果需要处理大规模数据和复杂查询,Elasticsearch可能更适合;而如果更注重开发速度和简单性,MeiliSearch可能是一个不错的选择。

问题1:没有apiKey的Config构造,使用时候的报错

Java会报错 Golang则不会 可以不设置apiKey

@Configuration
public class MeiliSearchConfig {

    @Bean
    public Client meiliSearchClient() {
        String meiliSearchHostUrl = "http://localhost:7700"; // 替换为你的 MeiliSearch 服务器地址
        String meiliSearchApiKey = ""; // 如果设置了 API 密钥,则在此处填写

        return new Client(new Config(meiliSearchHostUrl, meiliSearchApiKey));
    }
}

goland创建客户端

func main() {
	client := meilisearch.New("http://localhost:7700")
}

apiKey参考的获取请参考官网

https://www.meilisearch.com/docs/learn/security/basic_security

问题2:addDocuments的值没有id的话,不会报错,但是实际没有添加成功

golang

func main() {
	// 使用新版本 SDK 创建 MeiliSearch 客户端
	client := meilisearch.New("http://localhost:7700", meilisearch.WithAPIKey("a1234qqq"))

	// 读取本地 JSON 文件
	data, err := ioutil.ReadFile("Sft-instruction-sample.json")
	if err != nil {
		log.Fatalf("读取文件错误: %v", err)
	}

	// 解析 JSON 数据
	var sfts []Sft
	err = json.Unmarshal(data, &sfts)
	if err != nil {
		log.Fatalf("解析 JSON 错误: %v", err)
	}
	for i := range sfts {
		sfts[i].ID = i + 1
	}

	// 将数据添加到 MeiliSearch
	index := client.Index("sft")
	_, err = index.AddDocuments(sfts)
	if err != nil {
		log.Fatalf("添加文档错误: %v", err)
	}

	// 查询 MeiliSearch
	searchResponse, err := index.Search("描述", &meilisearch.SearchRequest{
		Limit: 10,
	})
	if err != nil {
		log.Fatalf("查询错误: %v", err)
	}

	// 打印查询结果
	fmt.Println("查询结果:")
	for _, hit := range searchResponse.Hits {
		fmt.Printf("id: %v,instruction: %v, input: %v,output: %v\n", hit.(map[string]interface{})["id"], hit.(map[string]interface{})["instruction"], hit.(map[string]interface{})["input"], hit.(map[string]interface{})["output"])
	}
}

Java

public void addDocumentTest() throws MeilisearchException {
        Index index = meiliSearchClient.index("aaaa");
        // 添加的对象必须有id 否则不能录入数据
        String[] documents = new String[]{
                "{ \"id\": 1, \"title\": \"The Shawshank Redemption\" }",
                "{ \"id\": 2, \"title\": \"The Godfather\" }"
        };
        index.addDocuments(Arrays.toString(documents));
    }
版权声明

   站内部分内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供网络资源分享服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请联系我们一经核实,立即删除。并对发布账号进行永久封禁处理。在为用户提供最好的产品同时,保证优秀的服务质量。


本站仅提供信息存储空间,不拥有所有权,不承担相关法律责任。
大数据

【Spark+Hive】基于Spark大数据技术小红书舆情分析可视化预测系统(完整系统源码+数据库+开发笔记+详细部署教程+虚拟机分布式启动教程)✅

2025-3-5 10:23:56

大数据

黑马点评day4:使用RabbitMQ实现消息队列

2025-3-5 10:23:59

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧