zero_terms_query 在 elasticsearch dsl 查询中的使用
Use of zero_terms_query in elasticsearch dsl query
谁能详细解释一下zero_terms_query elasticsearch,我看了elasticsearch的文档,但是没看懂
让我们通过自己的示例来理解它,为此让我们使用英语分析器创建一个索引,该索引将删除所有英语停用词,例如 to be or not to be
example given by Elasticsearch.
索引映射
{
"mappings" : {
"properties" : {
"title" : {
"type" : "text",
"analyzer" : "english"
}
}
}
}
索引几个示例文档
{
"title": "sudeesh"
}
{
"title": "to be or not to be"
}
搜索查询从查询中删除所有停用词,因为我们正在使用 match
查询,该查询将相同的 english
分析器应用于搜索查询。
{
"query": {
"match": {
"title": {
"query": "to be or not to be",
"operator": "and",
"zero_terms_query": "all"
}
}
}
}
搜索结果
"hits": [
{
"_index": "72442818",
"_id": "1",
"_score": 1.0,
"_source": {
"title": "to be or not to be"
}
},
{
"_index": "72442818",
"_id": "2",
"_score": 1.0,
"_source": {
"title": "sudeesh"
}
}
]
请注意,上面的搜索查询 return 都是我们指定的 "zero_terms_query": "all"
的文档,因此它将被视为 match_all
和 return 的所有文档。
如果您删除 "zero_terms_query": "all"
,它将被视为 Elasticsearch 文档中提到的 none
默认值,并且您不会得到任何搜索结果 ,因为没有搜索词在 Elasticsearch 中搜索。
当您的查询中包含所有停用词,并且您想要 return 更多搜索结果而不是 0 个搜索结果时,这尤其有用。
谁能详细解释一下zero_terms_query elasticsearch,我看了elasticsearch的文档,但是没看懂
让我们通过自己的示例来理解它,为此让我们使用英语分析器创建一个索引,该索引将删除所有英语停用词,例如 to be or not to be
example given by Elasticsearch.
索引映射
{
"mappings" : {
"properties" : {
"title" : {
"type" : "text",
"analyzer" : "english"
}
}
}
}
索引几个示例文档
{
"title": "sudeesh"
}
{
"title": "to be or not to be"
}
搜索查询从查询中删除所有停用词,因为我们正在使用 match
查询,该查询将相同的 english
分析器应用于搜索查询。
{
"query": {
"match": {
"title": {
"query": "to be or not to be",
"operator": "and",
"zero_terms_query": "all"
}
}
}
}
搜索结果
"hits": [
{
"_index": "72442818",
"_id": "1",
"_score": 1.0,
"_source": {
"title": "to be or not to be"
}
},
{
"_index": "72442818",
"_id": "2",
"_score": 1.0,
"_source": {
"title": "sudeesh"
}
}
]
请注意,上面的搜索查询 return 都是我们指定的 "zero_terms_query": "all"
的文档,因此它将被视为 match_all
和 return 的所有文档。
如果您删除 "zero_terms_query": "all"
,它将被视为 Elasticsearch 文档中提到的 none
默认值,并且您不会得到任何搜索结果 ,因为没有搜索词在 Elasticsearch 中搜索。
当您的查询中包含所有停用词,并且您想要 return 更多搜索结果而不是 0 个搜索结果时,这尤其有用。