使用python 进行elasticsearch search 的多词条匹配搜索
时间: 2024-03-08 07:51:34 浏览: 79
在 Elasticsearch 中,可以使用 `bool` 查询来进行多词条匹配搜索。具体来说,可以使用 `must` 子句来表示必须匹配的条件,使用 `should` 子句来表示可选匹配条件,使用 `must_not` 子句来表示必须不匹配的条件。
以下是一个使用 `bool` 查询进行多词条匹配搜索的示例代码:
```python
from elasticsearch import Elasticsearch
es = Elasticsearch()
query = {
"query": {
"bool": {
"must": [
{"match": {"title": "python"}},
{"match": {"content": "elasticsearch"}}
],
"should": [
{"match": {"tags": "programming"}},
{"match": {"tags": "search"}}
],
"must_not": [
{"match": {"status": "draft"}}
]
}
}
}
result = es.search(index="my_index", body=query)
```
在上面的代码中,我们使用 `bool` 查询来进行多词条匹配搜索。具体来说,我们要求搜索结果中必须包含 "python" 和 "elasticsearch" 两个词条,可选包含 "programming" 或 "search" 中的一个或多个词条,必须不包含 "status" 为 "draft" 的文档。这个查询会在名为 "my_index" 的索引中进行搜索,并返回符合条件的结果。
阅读全文