gpt4 book ai didi

elasticsearch - Elasticsearch:获取数组包含多个值之一的所有文档

转载 作者:行者123 更新时间:2023-12-03 00:32:23 24 4
gpt4 key购买 nike

我在Elasticsearch中具有以下文档数据结构:

{
"topics": [ "a", "b", "c", "d" ]
}

我有一个选择列表,用户可以在其中过滤要显示的主题。当用户对他们的过滤器表示满意时,将向他们显示所有具有在“主题”数组中选择的任何主题的文档

我试过查询
{
"query": {
"terms": {
"topics": ["a", "b"]
}
}
}

但这不会返回任何结果。

扩展查询。例如,列表 ["a", "b"]将与下面数组中的第一个,第二个和第三个对象匹配。

Example

在Elasticsearch中有什么好方法吗?显然,我可以进行多个“匹配”查询,但这很冗长,因为我有数百个主题

编辑:我的映射
{
"fb-cambodia-post": {
"mappings": {
"scrapedpost": {
"properties": {
"topics": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
}
}
}
}
}

最佳答案

正如@Filip cordas所提到的,您可以使用topic.keyword之类的。

 {
"query": {
"terms": {
"topics.not_analyzed": [
"A" , "B"
]
}
}
}

这将进行 case sensitive搜索。它将查找完全匹配。如果您想搜索 case-insensitive,可以使用 query_string像这样:
   {
"query": {
"query_string": {
"default_field": "topics",
"query": "A OR B"
}
}
}

关于elasticsearch - Elasticsearch:获取数组包含多个值之一的所有文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43847416/

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