使用elasticsearch实施建议“类别中的xxx”

2024-01-07

我想对产品实施类似亚马逊的“类别内”建议。亚马逊建议在特定类别中搜索给定术语,而不是全局搜索。这允许更具体的搜索和结果。

有没有办法使用elasticsearch提供的建议功能之一来实现这一点?

目前我的想法是从elasticsearch获取建议并按类别对它们进行分组作为后期处理。是否有内置的东西可以返回准备好的“类别内”结果?


如果你知道的话categories提前,你可以将它们传递为payload using 完成建议者 https://www.elastic.co/guide/en/elasticsearch/reference/current/search-suggesters-completion.html.

我创建了这个示例索引

PUT suggest_index/product/_mapping
{
  "product": {
    "properties": {
      "name": {
        "type": "string"
      },
      "suggest": {
        "type": "completion",
        "analyzer": "simple",
        "search_analyzer": "simple",
        "payloads": true
      }
    }
  }
}

然后我插入了几个产品,在有效负载中提供类别

PUT suggest_index/product/11
{
  "name": "watches",
  "suggest": {
    "input": [
      "watches"
    ],
    "payload": {
      "categories": [
        "Men",
        "Women",
        "Kids"
      ]
    },
    "weight": 10
  }
}

and

{
  "name": "phones",
  "suggest": {
    "input": [
      "phones"
    ],
    "payload": {
      "categories": [
        "Electronics",
        "Office Products"
      ]
    },
    "weight": 10
  }
}

然后当您查询时,您将获得所有类别的建议。

POST suggest_index/_suggest
{
  "product-suggest": {
    "text": "pho",
    "completion": {
      "field": "suggest"
    }
  }
}

这是我得到的输出

"product-suggest": [
      {
         "text": "pho",
         "offset": 0,
         "length": 3,
         "options": [
            {
               "text": "phones",
               "score": 10,
               "payload": {
                  "categories": [
                     "Electronics",
                     "Office Products"
                  ]
               }
            }
         ]
      }
   ]

现在您可以在前端显示它们,当用户点击搜索按钮时,您可以在可能不同的索引中搜索该类别和产品信息。

这满足您的要求吗?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用elasticsearch实施建议“类别中的xxx” 的相关文章

  • Android searchView下拉菜单屏幕宽度

    情况 我的 appcompat 工具栏中有一个 searchview 小部件 允许通过 sqlitedatabase 提供自定义建议 Problem 我无法将下拉建议列表扩展到屏幕的整个宽度 最好的情况下 列表宽度几乎是屏幕的宽度 除了左侧
  • 如何编写Elasticsearch多个必须脚本查询?

    我想使用查询来比较多个字段 我有字段 1 到 4 我想搜索字段 1 大于字段 2 的数据 并且下面的查询工作正常 size 0 source field1 field2 field3 field4 sort query bool filte
  • 如何在不更改设置的情况下不区分大小写排序

    我的索引名称是 data new 下面是插入索引的代码 test id 1 name A professor Bill Cage accounting id 2 name AB professor Gregg Payne engineeri
  • Elasticsearch 单个字段的多个分析器

    我使用严格的预定义映射将不同类型的文档存储在单个索引中 它们都有一些字段 例如 body 但我希望在索引时对它们进行稍微不同的分析 例如 对特定文档使用不同的标记过滤器 并在搜索时以相同的方式处理 据我所知 分析器不能按文档指定 我还考虑使
  • 我们可以同时使用拼音标记和同义词吗?

    我正在尝试同时启用语音分析器和同义词 这似乎不起作用 它们一起使用有错吗 在下面的实现中 我希望使用同义词转换搜索查询 然后使用语音分析器来检索结果 但我的同义词在这里完全被忽略了 如果我在创建索引时删除语音分析器 那么同义词就可以正常工作
  • 从 node.js 创建对 AWS ES 实例的有效签名请求

    我试图找到一个示例 说明如何连接到 Node js 中的 AWS ES 实例 然后通过一个简单的请求访问 ES 集群 我正在尝试使用elasticsearch节点包 https www npmjs com package elasticse
  • Elasticsearch 关于“空索引”的查询

    在我的应用程序中 我使用了几个elasticsearch索引 它们在初始状态下不包含索引文档 我认为这可以称为 空 该文档的映射是正确且有效的 该应用程序还有一个包含实体的关系数据库 这些实体可能具有在 elasticsearch 中关联的
  • ElasticSearch 映射对分组文档进行折叠/执行操作的结果

    有一个对话列表 每个对话都有一个消息列表 每条消息都有不同的字段和action场地 我们需要考虑到在对话的第一条消息中使用了动作A 在几条消息之后有使用的动作A 1过了一会儿A 1 1等等 有一个聊天机器人意图列表 对对话的消息操作进行分组
  • Elasticsearch 在 Mac 上存储数据的位置

    类似的问题this one https stackoverflow com questions 24694201 where are data files of elasticsearch on a standard debian inst
  • 如何使用scala获取elasticsearch中_delete_by_query api的状态

    我正在 scala 中向 elasticsearch 发送 HTTP post Http s http elkIp 5051 indexName delete by query postData s query terms zip id k
  • ElasticSearch - 尝试在 Windows 上启动服务时出错

    昨天 我在 Windows Server 2012 R2 上完成了 ElasticSearch 的安装 并且能够正常启动 ElasticSearch 服务 今天 我安装了 Kibana 和 X Pack 但在尝试启动 ElasticSear
  • Elasticsearch 跨多个索引搜索 - 忽略不存在的索引

    我有弹性集群 其中我的索引包含当前日期 例如 example idex 2016 07 26 gt exists example idex 2016 07 25 gt exists example idex 2016 07 24 gt do
  • Java ElasticSearch 配置的节点均不可用

    过去一小时刚刚下载并安装了elasticsearch 1 3 2 打开 IPtables 端口 9200 和 9300 9400 在 etc hosts 中设置我的计算机名称和 ip 头部模块和护理人员安装并运行顺利 本地主机上的curl
  • 我可以在 ids 过滤器或一般查询子句中指定的值数量的最大限制?

    在elasticsearch中指定可以执行匹配的值数量的最大限制是多少 我在某处读到它是 1024 但也是可配置的 真的吗 它如何影响性能 curl XPOST localhost 9200 my index search pretty d
  • 电子商务是否从头开始

    我需要开发一个包含电子商务部分的新网站 我来这里是想从你那里得到一些关于我应该走哪条路的提示 该网站将有一个静态部分 其中包括一些静态页面和用于销售产品的电子商务部分 我是 Django 和 PHP 开发人员 但这是我第一次需要开发电子商务
  • 当我使用完成建议器时,如何获得没有重复的独特建议?

    我在我的环境中使用弹性 5 1 1 我在字段名称上选择了完成建议器post hashtags带有一个字符串数组来提供建议 我收到前缀 inv 的响应如下 Req POST hashtag search pretty filter path
  • 使用 python 聚合 elasticsearch-dsl 中的字段

    有人可以告诉我如何编写 Python 语句来聚合 求和和计数 有关我的文档的内容吗 SCRIPT from datetime import datetime from elasticsearch dsl import DocType Str
  • query_string 和 multi_match 有什么区别?

    运行此查询时 query string query text fields field1 field2 multi match query text fields field1 field2 有什么不同 何时使用其中之一 何时使用另一个 q
  • field 和 field.keyword 之间的区别

    如果我将一个包含多个字段的文档添加到 Elasticsearch 索引中 当我在 Kibana 中查看它时 我每次都会得到相同的字段两次 其中之一将被称为 some field 另一个将被称为 some field keyword 这种行为
  • Elasticquent(ElasticSearch) Laravel 限制

    您好 我尝试使用 elasticSearch 查询获取所有结果 但如果 limit 值为 null 则仅返回 10 个结果 videos Video searchByQuery match gt field gt request gt fi

随机推荐