【问题标题】:Elasticsearch entire document search (Smart Search)Elasticsearch 整篇文档搜索(Smart Search)
【发布时间】:2020-04-30 16:29:03
【问题描述】:

我想编写一个查询,以便能够在我的 Elasticsearch 索引中的所有字段中进行搜索。我使用批量 API 向 es 插入数据,并且在索引时没有选择任何特定的分析器。默认情况下,我的字段将被分析,我不想更改我的索引。

我想创建一个查询,在 elasticsearch 的所有字段中搜索一段文本,并返回包含该文本作为某个字段中的子字符串的所有文档。一种方法是对每个字段使用 MatchPhrasePrefix 查询以及跨所有字段的 OR boolquery 来搜索整个文档。我的一些字段是字符串,有些是字符串映射。字符串的 MatchPhrasePrefix 查询很好。但是对于字符串的映射,键是不固定的,用户可以输入任意键和任意数量的键。所以我被困在如何在这样一个地图的所有键上使用 MatchPhrasePrefix 查询,其中键本身是不固定的。如果键是固定的,我会遍历地图条目并使用查询 MatchPhrasePefixQuery("mapname.key","string") 和 OR 查询。

我同意我可以使用 QueryString 和 SimpleQueryString 并在 Query("mapname.*","string") 之类的键上使用通配符,但这并没有给我正确的结果。所以我在分析我的字段时使用 MatchPhrasePrefix 查询。

关于如何在这种动态地图字段中搜索字符串的任何建议。如果不是这样,那么如何在没有 _all 字段的 elasticsearch 7.4 中搜索我的文档中的字符串?

【问题讨论】:

  • 请仔细阅读我的回答,如果您还有其他问题,请告诉我

标签: elasticsearch elasticsearch-dsl


【解决方案1】:

你的问题很难阅读,如果你打破你的问题并提供必要的信息来解决问题,它会更好。

如果你只关心:

关于如何在这样的动态地图中搜索字符串的任何建议 场地。如果不是这个,那么我如何在我的文档中搜索字符串 在没有 _all 字段的 elasticsearch 7.4 中?

然后,可以使用弹性搜索的copy_to 功能轻松实现,该功能在您的弹性搜索版本(即 7.4)中可用。如文档中所述

copy_to 参数允许你复制多个字段的值 到一个组字段中,然后可以将其作为单个字段进行查询。为了 例如,first_name 和 last_name 字段可以复制到 full_name 字段如下:

请注意整个示例显示在链接中,即定义索引、索引示例文档和搜索查询。

如果您遇到任何问题,请告诉我,并乐于提供进一步帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-20
    • 2021-12-06
    • 1970-01-01
    • 1970-01-01
    • 2017-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多