首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ElasticSearch几个搜索案例

问ElasticSearch几个搜索案例
EN

Stack Overflow用户
提问于 2017-07-27 09:53:17
回答 1查看 56关注 0票数 1

我在MySQL中有下一个结构:

  1. 表组- id、title、user_id
  2. 表关键字- id,title
  3. 表group_keyword - group_id,keyword_id

我查了5个案件:

  1. 按组标题的完全匹配title = "keyword"
  2. 按关键字标题title = "keyword"完全匹配
  3. 按组标题title like "keyword%"部分匹配
  4. 按组标题title like "%keyword%"部分匹配
  5. 按关键字标题title like "%keyword%"部分匹配

这些查询合并成一个查询。对于每个子查询,它都会附加一个名为priority的列,在该列上进行排序。

我的问题是:我应该如何配置ElasticSearch来完成上述的工作,或者如何构建对弹性的查询以获得结果?我问,因为这个查询在Mysql上非常慢,所以我们做了许多优化,添加了索引,拆分了表等等,所有的优化结果都是临时的。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2017-07-27 10:30:27

您是否希望分析您的关键字字段?一定要有5个不同的案子吗?

您必须确定您想要的可能的查询类型。

因为通配符查询:https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-wildcard-query.html

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

如果您想要更灵活的东西,性能不是问题(分析属性),那么可以使用ngram分析:https://www.elastic.co/guide/en/elasticsearch/reference/5.5/analysis-ngram-tokenizer.html。

这一个标记您的子术语,这意味着它打破了多个字符取决于您的ngram配置。

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

通配符研究==> not_analyzed

ngram研究==>ngram

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45347267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档