gpt4 book ai didi

elasticsearch - 在 Elastic Search 中索引逗号分隔值字段

转载 作者:行者123 更新时间:2023-11-29 02:46:26 27 4
gpt4 key购买 nike

我正在使用 Nutch 抓取网站并将其索引到 Elastic 搜索中。我的站点有元标记,其中一些包含以逗号分隔的 ID 列表(我打算将其用于搜索)。例如:

contentTypeIds="2,5,15"。 (注意:没有方括号)。

当 ES 对此建立索引时,我无法搜索 contentTypeIds:5 并找到 contentTypeIds 包含 5 的文档;此查询仅返回 contentTypeIds 恰好为“5”的文档。但是,我确实想查找 contentTypeIds 包含 5 的文档。

在 Solr 中,这通过在 schema.xml 中将 contentTypeIds 字段设置为 multiValued="true"来解决。我找不到如何在 ES 中做类似的事情。

我是 ES 的新手,所以我可能错过了一些东西。感谢您的帮助!

最佳答案

创建 custom analyzer这会将索引文本按逗号拆分为标记。

然后你可以尝试搜索。如果您不关心相关性,您可以使用过滤器来搜索您的文档。我的示例展示了如何尝试使用 term filter 进行搜索.

您可以在下面找到如何使用 sense 插件执行此操作。

DELETE testindex

PUT testindex
{
"index" : {
"analysis" : {
"tokenizer" : {
"comma" : {
"type" : "pattern",
"pattern" : ","
}
},
"analyzer" : {
"comma" : {
"type" : "custom",
"tokenizer" : "comma"
}
}
}
}
}

PUT /testindex/_mapping/yourtype
{
"properties" : {
"contentType" : {
"type" : "string",
"analyzer" : "comma"
}
}
}

PUT /testindex/yourtype/1
{
"contentType" : "1,2,3"
}

PUT /testindex/yourtype/2
{
"contentType" : "3,4"
}

PUT /testindex/yourtype/3
{
"contentType" : "1,6"
}

GET /testindex/_search
{
"query": {"match_all": {}}
}

GET /testindex/_search
{
"filter": {
"term": {
"contentType": "6"
}
}
}

希望对您有所帮助。

关于elasticsearch - 在 Elastic Search 中索引逗号分隔值字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31143136/

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