【问题标题】:How to query a text among all fields except using _all field in elasticsearch?除了在elasticsearch中使用_all字段外,如何在所有字段中查询文本?
【发布时间】:2017-05-27 20:49:52
【问题描述】:

除了在elasticsearch中使用_all字段外,如何在所有字段中查询文本?

{  
    "name":"niao",
    "address":"London",
    "email":"xue@gmail.com"
}

{  
    "name":"lia",
    "address":"Hong",
    "email":"lia@gmail.com"
}

{  
    "name":"zhang",
    "address":"Bei",
    "email":"niao@gmail.com"
}

我想查询任意字段中包含niao 的记录。 我想要的结果是记录 1 和 3。 虽然我们可以用_all字段查询,但我不想用它。
还有其他方法可以实现吗?

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    可以使用多字段匹配查询,例如:

    curl -X POST \
    http://127.0.0.1:9200/mapping/_search \
    -H 'cache-control: no-cache' \
    -H 'postman-token: 05aa4265-8e32-ffaa-43dd-d2299015a5a6' \
    -d '{
        "query": {
            "multi_match" : {
            "query":    "niao", 
            "fields": [ "name", "adddress", "email" ] 
            }
         }
       }'
    

    【讨论】:

    • 如果我想在多个索引中进行查询并且每个索引包含许多不同的字段怎么办?我必须在 DSL 的 fields 属性中列出整个字段。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-16
    • 2014-09-13
    • 1970-01-01
    • 1970-01-01
    • 2022-12-13
    • 2017-07-13
    • 1970-01-01
    相关资源
    最近更新 更多