gpt4 book ai didi

具有 multi_match 的 Elasticsearch 过滤器

转载 作者:行者123 更新时间:2023-12-02 22:15:30 32 4
gpt4 key购买 nike

我正在尝试在 ElasticSearch 中编写一个查询,在其中我将 multi_match 与过滤器结合起来用于 id 或数字 og id。

这是我目前所拥有的:

{
"query": {
"bool": {
"must": {
"multi_match": {
"query": "Kasper",
"fields": ["name", "first_name", "last_name"]
}
},
"filter": {
"term": {
"user_id": "ea7528f0-1b8a-11e8-a492-13e39bbd17cb"
}
}
}
}
}

查询的“必须”部分工作得很好,当我单独运行它时,我得到了两个结果。当我从两个结果之一中挑选出“user_id”并使用该 ID 添加查询的“过滤器”部分时,我什么也得不到。

我真正想做的是在 SQL 中有类似的东西,其中 user_id in ('id1', 'id2'),所以过滤会是这样的:

...,
"filter": {
"terms": {
"user_id": ["ea7528f0-1b8a-11e8-a492-13e39bbd17cb"]
}
}

我是不是理解错了什么?

最佳答案

我猜这是因为 user_id 字段被视为 text并进行了分析。你应该使用 keyword在这种情况下键入(您只需要更改 user_id 字段的映射。

另一种方式(如果您使用的是 Elasticsearch 5+),您可以在 keyword subfield 中搜索.只需尝试使用以下查询:

{
"query": {
"bool": {
"must": {
"multi_match": {
"query": "Kasper",
"fields": ["name", "first_name", "last_name"]
}
},
"filter": {
"term": {
"user_id.keyword": "ea7528f0-1b8a-11e8-a492-13e39bbd17cb"
}
}
}
}
}

我只在您的查询中将 "user_id" 更改为 "user_id.keyword"

关于具有 multi_match 的 Elasticsearch 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49005952/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com