Hy,我在Elasticsearch中为多个索引创建搜索查询时遇到了问题。我有两个索引,一个是“文件”,具有字段“文件名”,其他索引是“消息”,具有字段“消息ID”。我想得到基于两个索引的结果,其中文件名=“ELS中的任何存储名称”从文件索引和消息ID =“ELS中的任何存储ID”。我想在单个查询中进行此搜索。尝试基于多索引的ELS查询。
wko9yo5t1#
elasticsearch中搜索请求的URL中的索引指定要在其中搜索的索引。您可以通过在搜索请求的URL中指定索引来在一个或多个索引中搜索。要搜索与files索引的filename字段或message索引的messageid字段中的特定短语相匹配的文档,可以在带有should子句的bool查询中使用match_phrase查询。这使您可以搜索与任一查询相匹配的文档,同时只返回与指定短语完全匹配的文档。下面是一个例子:
files
filename
message
messageid
match_phrase
POST /files,message/_search { "query": { "bool": { "should": [ { "match_phrase": { "filename": "any stored name in els" } }, { "match_phrase": { "messageid": "any stored id in ELS" } } ] } } }
此搜索请求将返回files索引的filename字段中包含确切短语"any stored name in els"或message索引的messageid字段中包含确切短语"any stored id in ELS"的所有文档。这就是在Golang实现这一目标的方式:
query := elasticsearch.NewBoolQuery().Should( elasticsearch.NewMatchPhraseQuery("filename", "any stored name in els"), elasticsearch.NewMatchPhraseQuery("messageid", "any stored id in ELS"), ) searchResult, err := client.Search(). Index("files", "message"). Query(query). Do(context.Background())
1条答案
按热度按时间wko9yo5t1#
elasticsearch中搜索请求的URL中的索引指定要在其中搜索的索引。您可以通过在搜索请求的URL中指定索引来在一个或多个索引中搜索。
要搜索与
files
索引的filename
字段或message
索引的messageid
字段中的特定短语相匹配的文档,可以在带有should子句的bool查询中使用match_phrase
查询。这使您可以搜索与任一查询相匹配的文档,同时只返回与指定短语完全匹配的文档。下面是一个例子:
此搜索请求将返回
files
索引的filename字段中包含确切短语"any stored name in els"或message
索引的messageid字段中包含确切短语"any stored id in ELS"的所有文档。这就是在Golang实现这一目标的方式: