【发布时间】:2021-06-24 10:29:35
【问题描述】:
我在 ES 中有一些数据。例如
{
result: [{
id: 1,
full_text: some dummy text
}, {
id: 2,
full_text: i read my book sometimes
}, {
id: 3,
full_text: somewhere in time is one of the greatest albums of all time
}]
}
我必须创建一些查询来返回与全文字段中的单词完全匹配的所有文档。例如,如果我想在全文中获取所有带有单词“some”的文档,它必须只返回第一个没有模糊搜索的文档,并且不必考虑诸如“something,somewhere”之类的单词。 我尝试使用匹配项,但不返回完全匹配的单词。 我也尝试使用正则表达式,但无法创建正确的。例如,这个返回什么都没有,就像“full_text”中没有带有单词“some”的文档
{
"query": {
"regexp": {
"summary_text": {
"value": "\bsome\b"
}
}
}
}
有人知道这种搜索的正确查询或正则表达式吗?
【问题讨论】:
-
结果是文档中的数组吗?
-
不,只是文本。这是确切的结果: "hits": { "total": 2, "max_score": 1.0, "hits": [{id, full_text: some dummy text}, { id: 2, full_text: 我有时会读我的书} ]
-
匹配查询将在这种情况下工作。您可以添加您尝试过的查询以及索引的映射
-
根据您的回答,我刚刚尝试过:{ "query": { "match": { "full_text": { "query": "define" } } } } 查找所有文档里面的“定义”二字。但是这个查询也会返回带有“defines”、“defined”等词的文档
-
你能添加你的映射吗,我认为你的映射中使用了词干分析器,它将令牌减少到根。请添加映射以确认。您将通过 GET index-name/_mappings 获得映射
标签: python database elasticsearch