python - 如何在 Python elasticsearch 中转义连字符

标签 python python-3.x elasticsearch

我在 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/

相关文章:

python - 为什么第一行更长?

python - 尝试从 Excel 中获取子集

mongodb - 与 Elasticsearch 或其他面向文档的数据库一起使用的最佳文档结构

python - 获取矩阵(列表列表)的反对角线之和时出现 IndexError

elasticsearch - 在长浮点字段上排序无法正常工作(ES 1.3.4)

elasticsearch - elasticsearch用先前的值填补空白

python - 使用卷挂载的Docker上的事件监听器不起作用

javascript - flask-security ajax 注销导致 session 错误

python - pandas 中箱线图的数据限制和最大距离(Python)

python-3.x - Pygame:display.update() 直到时钟延迟后才会更新