我在 python 3 中使用基本的 elasticsearch 库。
我有一个查询:
query = {
"query": {
"bool": {
"must": [{ "term": {"hostname": '"hal-pc"' } }]
}
}
}
我调用:
page = es.search(index = index_name, body=query, search_type='scan', scroll='2m')
但是我没有得到任何结果。我可以查询其他字段,所以我知道我的查询有效,但是当我添加对值中带有连字符的字段的搜索时,我找不到任何东西。我怎样才能逃脱这个角色?我知道通过普通的 ES 查询,您可以发送一条消息来配置您的 ES 以某种方式响应某些字符,但我不知道如何在 python 中做到这一点。
最佳答案
如果字段 hostname
在映射中分析,elasticsearch 并没有按原样存储字段值。相反,它将“hal-pc”存储为两个单独的术语:“hal”和“pc”。因此,使用 term
搜索“hal-pc”时可能无法获得该文档。筛选。
您可以使用 Match
搜索“hal-pc”查询以获得必要的结果。或者,将字段设为 hostname
未分析和使用的字段 term
按原样查询。
{
"query": {
"match" : {
"hostname": "hal-pc"
}
}
}
但是,这也可能返回主机名只是“hal”或也只是“pc”的文档。
关于python - 如何在 Python elasticsearch 中转义连字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42230775/