【问题标题】:Query string with specifying term in ElasticSearch在 ElasticSearch 中指定术语的查询字符串
【发布时间】:2016-12-20 15:03:35
【问题描述】:

我有一个用于快速搜索的用户注册索引。我需要为每个事件实现特定字段的搜索。 (每个事件都有它的注册,但当然,我将它们存储到一个索引中)

我正在尝试使用以下参数进行搜索:

'query' => [
     'query_string' => [
          'query' => $query,
              'fields'=> ['name', 'lastName', 'email', ...]
           ],
      ],
 ]

但我还需要指定一个术语,它应该在注册中搜索特定事件。我的索引中有一个关键字字段:event_id

如何将这个词(event_id)添加到当前的搜索请求中?

PS:Filtered已被移除(替换为bool,但不支持query_string

或者最好为每个事件指定不同的索引类型:_type

【问题讨论】:

    标签: php elasticsearch


    【解决方案1】:

    使用bool/filter,您绝对可以包含query_stringterm 查询。试试这样:

    'query' => [
         'bool' => [
             'filter' => [
                 [
                    'query_string' => [
                      'query' => $query,
                      'fields'=> ['name', 'lastName', 'email', ...]
                    ],
                 ],
                 [
                    'term' => [
                      'event_id' => '123'
                    ]
                 ]
             ]
         ]
     ]
    

    【讨论】:

    • 我已经尝试过了,但它似乎不会影响搜索结果。不管我在寻找什么,它都会给出相同的结果
    • 您如何发送查询?
    • 好的,你的代码对我来说似乎很好。您还可以添加registrations 索引的映射吗?是什么让您认为结果不会改变?您能否展示您正在执行的一个特定查询和您获得的不应该匹配的示例文档?
    • 这是我的错误。在查看了我的代码后,我在我的客户端上发现了一个错误。它没有为空结果更新搜索结果,所以看起来它没有搜索。非常感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-18
    • 1970-01-01
    • 2022-01-03
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    相关资源
    最近更新 更多