【发布时间】:2021-10-27 03:43:19
【问题描述】:
我在 Elasticsearch 方面不是很强。我正在尝试在我的应用程序中设置搜索并遇到了一些奇怪的问题。我有两个文件:
{
"title": "Second insight"
"content": "Bla bla bla"
"library": "workspace"
}
{
"title": "Test source"
"content": "Bla bla bla"
"library": "workspace"
}
然后,我希望能够通过 title 和 content 等文本字段进行搜索,并对 library 等字段应用一些过滤器。我有一个问题:
{
"query": {
"bool": {
"should": [
{ "match": { "title": "insight" }}
],
"filter": [
{
"term": {
"library": "workspace"
}
}
]
}
}
}
尽管我明确定义title 与insight 匹配,但上面的查询返回两个 文档,而不仅仅是第一个。
如果我删除 filter 块:
{
"query": {
"bool": {
"should": [
{ "match": { "title": "insight" }}
]
}
}
}
查询返回正确的结果。
然后,我也尝试进行部分搜索。由于某些原因,下面的查询使用ins 而不是insight 不起作用,因此,它返回空列表:
{
"query": {
"bool": {
"should": [
{ "match": { "title": "ins" }}
]
}
}
}
我应该如何进行部分搜索?以及如何正确设置过滤器?也就是说,如何通过某些字段进行搜索部分查询,同时又被其他字段过滤?
谢谢。
【问题讨论】:
标签: elasticsearch