【发布时间】: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