elasticsearch,Php,Mysql,elasticsearch" /> elasticsearch,Php,Mysql,elasticsearch" />

Php 弹性搜索几个搜索案例

Php 弹性搜索几个搜索案例,php,mysql,elasticsearch,Php,Mysql,elasticsearch,我在MySQL中有下一个结构: 表组-id,title,user\u id 表关键字-id,title 表组关键字-组id,关键字id 我搜索了5个案例: 按组标题完全匹配title=“关键字” 按关键字title进行完全匹配title=“keyword” 按组标题的部分匹配标题,如“关键字%” 按组标题的部分匹配标题,如“%keyword%” 按关键字标题的部分匹配类似于“%keyword%”的标题 这些查询组合成一个查询。对于每个子查询,它都会附加一个名为priority的列,在该列上进行排

我在MySQL中有下一个结构:

  • 表组-
    id
    title
    user\u id
  • 表关键字-
    id
    title
  • 表组关键字-
    组id
    关键字id
  • 我搜索了5个案例:

  • 按组标题完全匹配
    title=“关键字”
  • 按关键字title进行完全匹配
    title=“keyword”
  • 按组标题的部分匹配
    标题,如“关键字%”
  • 按组标题的部分匹配
    标题,如“%keyword%”
  • 按关键字标题的部分匹配
    类似于“%keyword%”的标题
  • 这些查询组合成一个查询。对于每个子查询,它都会附加一个名为
    priority
    的列,在该列上进行排序

    我的问题是:我应该如何配置ElasticSearch来执行上述情况,或者我应该如何为Elastic构建查询以获得结果?我问,因为这个查询在Mysql上非常慢,我们做了很多优化,添加了索引,拆分了表等等,所有的优化结果都是临时的


    谢谢

    是否要分析关键字字段? 它必须是5个不同的案例吗

    您必须确定需要哪种类型的可能查询

    因为通配符查询:

    管理对所有5种情况的搜索(对于未分析的字段,这意味着关键字子项未标记化,ES使用defalt分析器搜索关键字属性,该分析器使用简单空格拆分单词,除非您指定自定义分析器)

    如果您希望更灵活,并且性能不是问题(分析属性),则可以使用ngram分析:

    这一个标记您的子项,这意味着它根据您的ngram配置将其拆分为多个字符

    当然,您的文档映射应该在每种情况下指定分析程序:

    通配符研究==>未分析

    ngram研究==>ngram


    PS:浏览ES文档时请注意。ES版本规范非常重要,因为版本之间存在大量折旧:)。选择右侧安装的主要版本,然后浏览。

    是否要分析关键字字段? 它必须是5个不同的案例吗

    您必须确定需要哪种类型的可能查询

    因为通配符查询:

    管理对所有5种情况的搜索(对于未分析的字段,这意味着关键字子项未标记化,ES使用defalt分析器搜索关键字属性,该分析器使用简单空格拆分单词,除非您指定自定义分析器)

    如果您希望更灵活,并且性能不是问题(分析属性),则可以使用ngram分析:

    这一个标记您的子项,这意味着它根据您的ngram配置将其拆分为多个字符

    当然,您的文档映射应该在每种情况下指定分析程序:

    通配符研究==>未分析

    ngram研究==>ngram

    PS:浏览ES文档时请注意。ES版本规范非常重要,因为版本之间存在大量折旧:)。在右侧选择安装的主要版本,然后浏览