带Elasticsearch的布尔查询
我目前正在使用以下查询-带Elasticsearch的布尔查询,
Warning: implode(): Invalid arguments passed in /data/phpspider/zhask/webroot/tpl/detail.html on line 45
,,我目前正在使用以下查询- { "_source": [ "title", "bench", "id_", "court", "date", "content" ], "size": 15, "from": 0, "query": { "bool": { "must": [ {
{
"_source": [
"title",
"bench",
"id_",
"court",
"date",
"content"
],
"size": 15,
"from": 0,
"query": {
"bool": {
"must": [
{
"multi_match": {
"query": "the",
"fields": [
"content"
], "operator": "and"
}
},
],
"should": {
"multi_match": {
"query": "the",
"fields": [
"content.standard^2"
], "operator": "and"
}
}
}
}
,
"highlight": {
"pre_tags": [
"<tag1>"
],
"post_tags": [
"</tag1>"
],
"fields": {
"content": {}
},
"fragment_size": 100
}
}
我的分析器是一个变音分析器。
这是我的目标。我希望精确匹配(标准)首先出现,然后是语音匹配。我能够通过代码实现这一点。我很确定这里面有一些不必要的逻辑,如果有人能指出,我将不胜感激
另外,我想加入的是一个搜索逻辑,用户可以在其中输入类似的搜索
皇家马德里、巴塞罗那或曼联。
在这里,我想要所有包含皇家马德里和巴塞罗那/曼彻斯特联队/我如何实现我现有的查询(经过修改)?我在您的查询中看不到任何副作用。关于搜索逻辑,最简单的方法可能是使用。默认情况下,它支持布尔运算符,因此您的查询可能如下所示:
{
"_source": [
"title",
"bench",
"id_",
"court",
"date",
"content"
],
"size": 15,
"from": 0,
"query": {
"bool": {
"must": [
{
"query_string" : {
"query" : "Real Madrid AND Barcelona OR Manchester United",
"fields" : ["content", "title"],
"operator": "and"
}
}
],
"should": {
"query_string" : {
"query" : "Real Madrid AND Barcelona OR Manchester United",
"fields" : ["content.standard", "title.standard"],
"boost": 2,
"operator": "and"
}
}
}
},
"highlight": {
"pre_tags": [
"<tag1>"
],
"post_tags": [
"</tag1>"
],
"fields": {
"content": {}
},
"fragment_size": 100
}
}
{
“_来源”:[
“头衔”,
“长凳”,
“身份证”,
“法庭”,
“日期”,
“内容”
],
“尺寸”:15,
“from”:0,
“查询”:{
“布尔”:{
“必须”:[
{
“查询字符串”:{
“查询”:“皇家马德里和巴塞罗那还是曼联”,
“字段”:[“内容”、“标题”],
“操作员”:“和”
}
}
],
“应该”:{
“查询字符串”:{
“查询”:“皇家马德里和巴塞罗那还是曼联”,
“字段”:[“内容.标准”,“标题.标准”],
"提振":二,,
“操作员”:“和”
}
}
}
},
“亮点”:{
“pre_标签”:[
""
],
“post_标签”:[
""
],
“字段”:{
“内容”:{}
},
“碎片大小”:100
}
}
否则,您将不得不解析查询并使用多个bool查询对运算符进行建模。我看不到查询中的任何副作用。关于搜索逻辑,最简单的方法可能是使用。默认情况下,它支持布尔运算符,因此您的查询可能如下所示:
{
"_source": [
"title",
"bench",
"id_",
"court",
"date",
"content"
],
"size": 15,
"from": 0,
"query": {
"bool": {
"must": [
{
"query_string" : {
"query" : "Real Madrid AND Barcelona OR Manchester United",
"fields" : ["content", "title"],
"operator": "and"
}
}
],
"should": {
"query_string" : {
"query" : "Real Madrid AND Barcelona OR Manchester United",
"fields" : ["content.standard", "title.standard"],
"boost": 2,
"operator": "and"
}
}
}
},
"highlight": {
"pre_tags": [
"<tag1>"
],
"post_tags": [
"</tag1>"
],
"fields": {
"content": {}
},
"fragment_size": 100
}
}
{
“_来源”:[
“头衔”,
“长凳”,
“身份证”,
“法庭”,
“日期”,
“内容”
],
“尺寸”:15,
“from”:0,
“查询”:{
“布尔”:{
“必须”:[
{
“查询字符串”:{
“查询”:“皇家马德里和巴塞罗那还是曼联”,
“字段”:[“内容”、“标题”],
“操作员”:“和”
}
}
],
“应该”:{
“查询字符串”:{
“查询”:“皇家马德里和巴塞罗那还是曼联”,
“字段”:[“内容.标准”,“标题.标准”],
"提振":二,,
“操作员”:“和”
}
}
}
},
“亮点”:{
“pre_标签”:[
""
],
“post_标签”:[
""
],
“字段”:{
“内容”:{}
},
“碎片大小”:100
}
}
否则,您将不得不解析查询并使用多个布尔查询对运算符进行建模。您最终需要查询来支持
皇家马德里和巴塞罗那或曼联
搜索?是@OpsterESNinja.@OpsterESNinja有任何更新吗?您最后需要查询来支持皇家马德里和巴塞罗那或曼彻斯特United
搜索?是@OpsterESNinja@OpsterESNinja有任何更新吗?谢谢。你能解释一下为什么你给了boost
,为什么只有content
字段?我想让标题
字段也可以搜索。谢谢。我试着反映你提供的问题。因为您在content.standard(content.standard^2
)上有了提升,所以我在我的选项中添加了相同的提升。如果要搜索多个字段,只需使用fields属性而不是默认字段,如(请参阅更新的查询)谢谢中所述。你能解释一下为什么你给了boost
,为什么只有content
字段?我想让标题
字段也可以搜索。谢谢。我试着反映你提供的问题。因为您在content.standard(content.standard^2
)上有了提升,所以我在我的选项中添加了相同的提升。如果要搜索多个字段,只需使用fields属性而不是默认字段,如中所述(请参阅更新的查询)