Php 弹性搜索几个搜索案例
我在MySQL中有下一个结构: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的列,在该列上进行排
id
,title
,user\u id
id
,title
组id
,关键字id
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版本规范非常重要,因为版本之间存在大量折旧:)。在右侧选择安装的主要版本,然后浏览