问题标签 [elasticsearch-plugin]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
306 浏览

search - 具有多租户的 Couchbase Elastic Search 插件

在将 couchbase 与弹性搜索插件集成时,这更像是一个设计问题。我在之前的产品中使用了多租户的 couchbase,我们遵循了我们在 couchbase 博客上找到的第一个建议,即Single Couchbase Bucket for All Tenants

现在我们正在研究使用 couchbase 弹性搜索插件在 couchbase 数据上利用弹性搜索功能。通过 couchbase 弹性搜索插件文档(安装和设置),我意识到您只能一对一couchbase bucket映射elasticsearch index。该文档可在此处找到Elasticsearch 插件配置和此处连接到集群。现在在这种情况下,就像 couchbase 存储桶一样,所有文档(无论租户如何)都将驻留在同一个索引中。

现在这是我的问题。无论文档如何存储在沙发库中,我都希望弹性搜索索引每个租户。我对这两个系统之间的集成仍然很陌生,但我假设每个租户拥有单独的搜索索引(并且每个租户/索引都有许多不同的类型)绝对可以 1)提高每个租户的搜索性能2) 对可能具有最少数据集的特定租户的特定搜索查询的性能不会受到同一索引上某些其他租户的大量数据集的影响(尽管不合理,假设租户之间的数据集相差 50 倍)

我想知道的是,我的担忧是否有效。将所有租户编入索引是否会影响搜索查询的性能?如果是这样,任何人都有关于如何使用 couchbase 弹性搜索插件来实现这一点的任何解决方案?

感谢所有帮助和想法!

0 投票
1 回答
2678 浏览

post - 为什么在弹性搜索头 UI“任何请求”中 POST 而不是 GET

我有一个类似的问题在 这里问

我在头插件中运行以下查询,任何请求选项卡(带有_search端点和GET):

我所有的文件都很成功,所有的分数都是 1,解释说像 ConstantScore(*:*)。

在链接的问题中,有人回答说您必须确保使用 POST 而不是 GET,它按预期工作(返回具有不同分数的所有文档的子集)。我的问题是为什么 POST 而不是 GET?elasticsearch 指南中的可比示例说使用 GET。

另外,如果我使用 curl 运行相同的请求:

它按预期工作,在头插件中提供与 POST 请求相同的分数和文档。此外,我刚刚检查过,带有 -XPOST 的 curl 版本也可以使用。

0 投票
1 回答
1337 浏览

indexing - Elasticsearch Ngram 和查询字符串查询

我正在使用 Elasticsearch 1.2.1。

我正在使用 Ngram 标记器来标记我的文档。我有一个特殊的用例,我的字段可能很长(200-500 个字符),我想支持来自字段任何点的冗长(最多 200 个字符)“包含”查询。

我从最多 260 个字符的 Ngram 分析器开始,很快发现索引时间太慢且容量太大,因此我将大小减小到大约 30 个字符。

现在,我希望能够将大于 30 个字符的标记分解为更小的标记,并用损坏的标记替换用户搜索(知道如果我使用更大的 Ngram 索引,我可能会得到更多的结果) .

实现此功能的推荐方法是什么?请注意,我正在使用查询字符串查询。

0 投票
1 回答
1567 浏览

json - 如何在 elasticsearch river 插件的帮助下从 elasticsearch 服务器索引 couchdb,从而获取 JSON 数据

我正在研究数据的图形表示。该图接受 JSON 数据,因此我需要从 couchdb 获取所需的数据。我正在使用弹性搜索服务器来索引 couchdb,从而检索所需的数据。我正在使用elasticsearch River 插件来制作couchdb 和elasticsearch 服务器。

我已经创建了 CouchDB 数据库“testdb”并为此创建了一些测试文档。使用数据库设置弹性搜索。在通过使用默认搜索条件编写 CURl GET 命令进行测试时,我们必须得到大于 0 的“总命中”,并且“命中”必须具有搜索条件的一些响应值。但是我们得到 'total hits' 为 0 和 'hits':[] (即 null)

我遵循的程序。

1)下载安装couchdb最新版本

2) 已验证 CouchDB 正在运行

卷曲本地主机:5984

3) 下载 ElasticSearch 并安装服务

服务.bat 安装

卷曲http://127.0.0.1:9200

4) 为 ElasticSearch 1.4.2 安装了 CouchDB River 插件

插件-安装 elasticsearch/elasticsearch-river-couchdb/2.4.1

5) 创建 CouchDB 数据库和 ElasticSearch 索引

curl -X PUT " http://127.0.0.1:5984/testdb "

6)创建一些测试文件:

curl -X PUT " http://127.0.0.1:5984/testdb/1 " -d "{\"name\":\"我的名字 1\"}"
curl -X PUT " http://127.0.0.1 :5984/testdb/2 " -d "{\"name\":\"我的名字 2\"}"
curl -X PUT " http://127.0.0.1:5984/testdb/3 " -d "{\ "name\":\"我的名字 3\"}"
curl -X PUT " http://127.0.0.1:5984/testdb/4 " -d "{\"name\":\"我的名字 4\" }"

7) 使用数据库设置 ElasticSearch

curl -X PUT "127.0.0.1:9200/_river/testdb/_meta" -d "{ \"type\" : \"couchdb\", \"couchdb\" : { \"host\" : \"localhost\ ", \"port\" : 5984, \"db\" : \"testdb\", \"filter\" : null }, \"index\" : { \"index\" : \"testdb\", \"type\" : \"testdb\", \"bulk_size\" : \"100\", \"bulk_timeout\" : \"10ms\" } }"

8) 测试它

卷曲“ http://127.0.0.1:9200/testdb/testdb/_search?pretty=true

但我得到了这样的东西

0 投票
1 回答
742 浏览

elasticsearch - 弹性搜索行到列

我在 ElasticSearch 中有这样的文档。我想进行搜索并获得像 sql server pivot 这样的结果。但我不知道我该怎么做。

当我搜索“C30 A”时,我想显示这样的数据。

我怎样才能做到这一点 ?ES有可能吗?

0 投票
1 回答
646 浏览

elasticsearch - 嵌套字段上的弹性搜索不起作用

我们在 ES 中使用以下设置:

简而言之,我们使用两种不同的类型——包裹和收件人。此外,与包裹相关联的收件人也存储在 ES 中。

现在,如果我们像这样搜索:

尽管该特定收件人确实存在,但 ES 不会返回任何记录。但是如果我们像这样搜索:

ES 正在返回记录。我不明白为什么搜索在上述两种情况下表现不同。

您能否建议我们需要更改/更正什么,以便搜索在这两种情况下都有效?

0 投票
2 回答
1021 浏览

elasticsearch - Elasticsearch 数据库同步

我正在使用 jdbc River 来同步 Elasticsearch 和数据库。已知的问题是从数据库中删除的行仍保留在 ES 中,jdbc River 插件无法解决该问题。jdbc River的作者提出了解决问题的方法:

一个好的方法是窗口索引。每个时间范围(可能每天一次或 > 每周)都会为河流创建一个新索引,并添加到别名中。旧的 > 索引将在一段时间后被删除。此维护类似于 >logstash 索引,但它超出了河流的范围。

我的问题是,这意味着什么?

假设我在名为 table1 的数据库中有数百万行的表,我的尝试如下:

  1. 创建名为river1 的河流,索引为1。index1 包含 table1 的索引行。Index1 添加到别名。
  2. table1 中的一些行在白天被删除,所以每天晚上我都会创建另一条名为 river2 的河流,其中 index2 仅包含 table1 中现在存在的内容。
  3. 从别名中删除旧的 index1 并将 index2 添加到别名。
  4. 删除旧的 index1。

那是正确的方法吗?

0 投票
1 回答
1629 浏览

elasticsearch - 如何在 ElasticSearch 中使用自定义分析器?

我想尝试支持波兰语的 Elasticsearch,但我遇到了一些问题。我安装了Stempel Analysis Plugin,我正在尝试创建一个使用波兰分析器的索引:

但我收到关于无法识别分析器的错误:

安装插件并重启 ES 后我应该做些什么吗?我找不到任何关于使用插件的具体说明,所以也许我只是在做一些明显错误的事情?

有关如何设置环境的更多详细信息:我使用 ES 和 kibana 通过命令安装并运行 docker 映像:

我通过命令安装了 Stempel 插件:

然后我重启了elasticsearch,通过:root@docker-es:/# service elasticsearch restart

我将不胜感激任何帮助!克日什托夫

0 投票
2 回答
1332 浏览

elasticsearch - ELK - 屏蔽身份验证问题

我正在尝试为 Elasticsearch 设置 Shield,但遇到了一些问题

当我尝试像这样启动 Elasticsearch 时:

一切都按预期工作,但是当我尝试启动/重新启动 Elasticsearch 时:

我有下面描述的错误

操作系统:Ubuntu 12.04
Elasticsearch:1.4.3
Shield:1.0.1 Elasticsearch 和 Shield 以默认设置运行

0 投票
1 回答
614 浏览

elasticsearch - 为什么 Kibana 趋势不起作用?

我从 Twitter 创建了一条数据河,并使用 elasticsearch 将该数据加载到 Kibana 仪表板中。虽然其中提到的所有分析工具都可以正常处理我的数据,但“趋势”工具显示错误“糟糕!此面板必须存在时间过滤器才能运行”。我也尝试过应用过滤器。但问题依然存在。谁可以帮我这个事?