标签: elasticsearch

结合关系数据库和弹性搜索

我们有大量的文本文件,我们想要自由文本/全文搜索,结合有关文本文件的关系结构化元数据。因此,搜索可以是“给我属于 X 组(或 X 的子组)、作者(Ari 和 Bari 和 Mari)、属于组织 Y 并包含文本“合成”的所有文件。后半部分一个是全文搜索,另一个已经作为关系数据存储在我们现有的数据库中。

在我们的数据库(相当复杂)中,存储了一种标识文件的方法,以及大量关于文件的各种元数据,分布在数十个表中,从简单的 1-1 关系到 1-多组 pr文件,甚至树结构关系(比如“这个文件是类型 X,类型 X 是类型 Y 的子组,等等)。而且这个元数据可能会随着时间的推移而改变,在整个应用程序中(这是巨大的)。

现在,我作为数据库管理员,认为这可以通过使用 SQL Server 搜索数据库中已有的结构化元数据来解决,将搜索限制为候选文件,然后将候选文件 id 传递给弹性搜索以获取完整-文本搜索。(在我们的代码中添加或提交文件时在弹性上重新索引文件是微不足道的)

然而,我们项目中的elastic-guys自然有不同的想法:从文件中提取所有元数据以及全文内容,进行elastic-search,并在elastic中专门运行搜索。

这使他们可以轻松地运行完整的 lucene 查询,并且从数据库中删除了负载,这很好。然而,这对我来说也带来了一个噩梦,以保持结构化元数据同步,并且由于数据的规模,不可能定期盲目地重新索引/同步所有内容。

我可以看到这两种选择的优点/顾虑。这种事情有最佳实践吗?

database-design sql-server elasticsearch

9
推荐指数
1
解决办法
2573
查看次数

数据库事件但不是触发器

这是一个关于一般 DB 内部工作的问题,而不是特定于实现或范例,尽管欢迎对某些技术的回答。我在问是否有办法监听数据库接收到的命令,或者读取数据库的内部日志,至少是最后的更改。我需要这样的功能才能找到表是否有更改,如果有,请读取已更改的特定行。假定不会发生对列的更改。
我只是数据库的侦听器,因此我无法编写触发器。

oracle sql-server elasticsearch

5
推荐指数
1
解决办法
521
查看次数

我们如何在 BigQuery 上进行全文搜索和构面内容?

未来,我们的网络产品将拥有数百万条记录。所以我们使用 BigQuery 进行数据存储和分析。我们必须在搜索页面上构建过滤器,例如 Flipkart 和亚马逊提供产品过滤器。

基本上,我们在搜索页面的左侧需要不同的过滤器。借助这些过滤器,我们可以看到我们想要的结果。每个过滤器都有其计数,即该类别/术语中的记录计数。因此,我们必须以这样的方式构建查询,以便它们给出每个类别(术语)的结果和计数。这里,“类别”是指不同列上的不同类型过滤器,就像我们在电子商务网站(例如 Flipkart、亚马逊等)上看到的那样。

分面搜索(也称为分面导航、引导导航或参数搜索)将搜索结果分为多个类别,通常显示每个类别的计数,并允许用户“深入分析”或根据这些分面进一步限制其搜索结果。

是否有像 Solr 这样的框架/插件可以与 BigQuery 一起使用来提供上述所需的功能?

BigQuery 不适合上述目的吗?为此,我们是否需要坚持使用任何 RDBMS 数据库(例如 PostgreSQL、MySQL 等)和搜索引擎(例如 Solr、Elasticsearch 等)?

rdbms full-text-search elasticsearch solr google-bigquery

4
推荐指数
1
解决办法
2877
查看次数

更改 Elasticsearch 索引的分析器?

我想更改 ElasticSearch 中现有索引的分析器,但我无法弄清楚语法(而且我没有理解错误消息)。

GET /ccc_test/_mapping

{
  "ccc_test": {
    "mappings": {
      "test_article": {
        "properties": {
          "id": {
            "type": "text"
          },
          "language": {
            "type": "text"
          },
          "text": {
            "type": "text"
          },
          "title": {
            "type": "text"
          },
          "url": {
            "type": "keyword"
          }
        }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

然后我用以下命令关闭索引:

POST /ccc_test/_close
Run Code Online (Sandbox Code Playgroud)

然后我尝试将“标题”字段的分析器更新为葡萄牙语:

PUT /ccc_test/_mapping/test_article
{
  "properties" : {
    "title" : {
      "type" : "text",
      "analyzer" : "portuguese"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

但我收到这个错误:

{
  "error": {
    "root_cause": [
      {
        "type": "remote_transport_exception",
        "reason": "[instance-0000000004][172.17.0.8:19760][indices:admin/mapping/put]"
      }
    ],
    "type": …
Run Code Online (Sandbox Code Playgroud)

elasticsearch

3
推荐指数
1
解决办法
7555
查看次数