【问题标题】:Elasticsearch not searching some fieldsElasticsearch 不搜索某些字段
【发布时间】:2014-02-07 00:18:57
【问题描述】:

我刚刚更新了一个网站,更新为elasticsearch添加了新字段。

在我的开发环境中,一切正常。但在实时站点上,未找到新字段。

例如。我添加了一个新字段,其值为:1

但是,当添加过滤查询时

{“字段”:1}

没有找到任何匹配的结果。

当我查看文档时,我可以看到字段设置为 1 的文档

这是因为新字段是在设置映射后添加的吗?我对 elasticsearch 不是很熟悉,所以我不确定从哪里开始寻找修复它。

任何帮助将不胜感激。

更新:

从 URL 查询也没有显示任何内容

_search/?pretty=true&size=50&q=field1:*

但是同时添加了另一个字段,我可以搜索。 我可以在结果集中看到 field1,但它不允许我搜索它。

我在映射中看到的唯一区别是正在工作的设置为 type:long 而不工作的设置为 type:string

【问题讨论】:

  • 请显示您用于重现此问题的实际步骤。活动部件太多,仅凭您上面提供的信息无法为您提供答案。
  • 我添加了一些我尝试过的东西。该字段确实显示在映射中,它确实显示在结果集中,但不允许我搜索它。
  • 您能否将用于此索引和/或类型的整个映射添加到您的问题中?
  • 我再次请求更多信息。请添加 (1) 完整映射(从 Elasticsearch 检索),(2) 实际文档(从 Elasticsearch 检索)和 (3) 您用来验证这不起作用的实际 curl 命令。

标签: elasticsearch


【解决方案1】:

这是 ngram 的长度问题吗?你的“min_gram”设置是什么? 当您像这样检查索引设置时:

GET <host>/<index_name>/_settings

过滤两位数字段时是否有效? 所有字段值都是一位数吗?

【讨论】:

    【解决方案2】:

    设置好映射后添加字段即可。 ElasticSearch 会为您猜测映射。 (事实上​​,这是他们的卖点之一——无需定义映射,只需将数据扔给它)

    有几件事可能会出错:

    1. 验证数据是否确实在索引中。为此,只需导航到不带参数的_search url,如果它被索引,您应该会看到该字段。

    2. 查看您的映射。难道是字段被明确设置为不被索引?

    3. 另一种可能性是您的查询错误(但这不太可能,因为您说它在开发环境中有效)

    【讨论】:

    • 感谢您的帮助。我试图查看 _search 并且带有字段集的记录在那里显示正确的值。奇怪的是,我在其中添加了多个字段。因此,使用 url 方法,我对添加的另一个字段 (?q=field2:*) 进行了搜索,它找到了结果,但如果我尝试 (?q=field1 :*) 它没有结果。
    • 我还检查了映射,它在映射中作为“字符串”在映射中没有设置其他参数。
    猜你喜欢
    • 2010-12-15
    • 2017-12-11
    • 1970-01-01
    • 1970-01-01
    • 2017-09-15
    • 2012-08-09
    • 2021-03-10
    • 2017-05-25
    • 1970-01-01
    相关资源
    最近更新 更多