full-text-search - msearch 不能与 bool 一起使用

标签 full-text-search elasticsearch

Elasticsearch 版本 - .90.1

以下效果完美。

cat names
{"index":"events","type":"news"}
{"query":{"term":{"Type":"MarketEvent"}}}
{"query":{"term":{"Type":"MarketEvent"}}}

curl -XGET 'http://localhost:9200/_msearch'  --data-binary @names

以下也适用

{"index":"events","type":"news"}
{"query":{"bool":{"must":[{"query_string":{"query":"*","fields":["Events.Event"],"default_operator":"AND"}},{"term":{"Type":"MarketEvent"}}]}}}

但是超过 1 个 bool 的查询不起作用 -

cat names
{"index":"events","type":"news"}
{"query":{"bool":{"must":[{"query_string":{"query":"*","fields":["Events.Event"],"default_operator":"AND"}},{"term":{"Type":"MarketEvent"}}]}}}
{"query":{"bool":{"must":[{"query_string":{"query":"*","fields":["Events.Event"],"default_operator":"AND"}},{"term":{"Type":"MarketEvent"}}]}}}

curl -XGET 'http://localhost:9200/_msearch'  --data-binary @names
{"error":"must doesn't support arrays"}

我在日志中没有看到任何相关日志(也不在 Debug模式下) 这是一个错误吗?

最佳答案

_msearch 查询应采用以下格式:

header\n
body\n
header\n
body\n

在第一个和最后一个查询中,第二个 header 丢失。仅由于 header 的解析方式,第一个查询不会生成错误。为了使此查询正常工作,names 文件应更改为

{"index":"events","type":"news"}
{"query":{"bool":{"must":[{"query_string":{"query":"*","fields":["Events.Event"],"default_operator":"AND"}},{"term":{"Type":"MarketEvent"}}]}}}
{"index":"events","type":"news"}
{"query":{"bool":{"must":[{"query_string":{"query":"*","fields":["Events.Event"],"default_operator":"AND"}},{"term":{"Type":"MarketEvent"}}]}}}

关于full-text-search - msearch 不能与 bool 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16995294/

相关文章:

full-text-search - Plone 中的自定义 SearchableText 和 HTML 字段

SQL Server 自由文本匹配 - 如何按相关性排序

elasticsearch - Elasticsearch主碎片丢失-如何恢复?

elasticsearch - 通过减去两个数字字段对elasticsearch进行排序

elasticsearch - 如何使用 spring 数据 elasticSearch 映射连接类型

elasticsearch - Elasticsearch多级嵌套对象过滤器和更新

database - SQL Server 2008 问题上的全文搜索实现

MySQL 针对列值进行全文搜索?

full-text-search - Notepad++ 搜索忽略空格?

elasticsearch - 我可以使用Logstash提取压缩数据吗?