gpt4 book ai didi

elasticsearch - 鉴于我的映射和使用关键字,我应该如何查询 Elastic Search?

转载 作者:行者123 更新时间:2023-11-29 02:48:17 25 4
gpt4 key购买 nike

我有一个非常简单的映射,看起来像这样(我稍微简化了示例):

{
"location" : {
"properties": {
"name": { "type": "string", "boost": 2.0, "analyzer": "snowball" },
"description": { "type": "string", "analyzer": "snowball" }
}
}
}

现在我使用一些基于真实英语单词的随机值来索引很多位置。

我希望能够搜索与名称或描述字段中给定的任何关键字 匹配的位置(名称更重要,因此我给了它提升)。我尝试了几个不同的查询,但它们没有返回任何结果。

{
"fields" : ["name", "description"],
"query" : {
"terms" : {
"name" : ["savage"],
"description" : ["savage"]
},
"from" : 0,
"size" : 500
}
}

考虑到描述中有 savaged 这个词的位置,它应该能给我一些结果(savagesavaged 的词干) .它使用上述查询产生 0 个结果。我一直在使用 curl 来查询 ES:

curl -XGET -d @query.json http://localhost:9200/myindex/locations/_search

如果我改用查询字符串:

curl -XGET http://localhost:9200/fieldtripfinder/locations/_search?q=description:savage

我实际上得到了一个结果(当然现在它只会搜索描述字段)。

基本上,我正在寻找一个查询,该查询将使用多个关键字进行 OR 类搜索,并将它们与名称和描述字段中的值进行比较。

最佳答案

Snowball 将“savage”变成了“savag”,这就是术语“savage”没有返回任何结果的原因。但是,当您在 URL 上指定“savage”时,它会被分析并得到结果。根据您的意图,您可以使用正确的词干(“savag”)或使用“匹配”查询而不是“术语”来分析您的术语:

{
"fields" : ["name", "description"],
"query" : {
"bool" : {
"should" : [
{"match" : {"name" : "savage"}},
{"match" : {"description" : "savage"}}
]
},
"from" : 0,
"size" : 500
}
}

关于elasticsearch - 鉴于我的映射和使用关键字,我应该如何查询 Elastic Search?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6764553/

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