elasticsearch index template - yaokun123/php-wiki GitHub Wiki

  • 1、设置模版
GET _scripts/company_cha_tmp
{
  "script":{
    "lang":"mustache",
    "source":
    """
    {
      "from":{{from}}{{^from}}0{{/from}},
      "size":{{size}}{{^size}}10{{/size}},
      "track_total_hits":true,
      {{#sortfield}}
      "sort":[{
        "{{sortfield}}":{
          "order":"{{sortmode}}{{^sortmode}}desc{{/sortmode}}",
          "missing":"_last"
        }
      }]
      ,
      {{/sortfield}}
      "query":{
        "bool":{
          "must":{
            "function_score":{
	      {{#query_string}}
              "query":{
                "multi_match":{
                  "query":"{{query_string}}",
                  "fields":{{#toJson}}searchFields{{/toJson}}{{^searchFields}}["companyName^10","companyNameStr^25","historyName^10","companyDesc^4","businessScope","employeeName","legalPerson^4","product^5","trademark^2","companyAddress","partnerStockName","creditNo^25"]{{/searchFields}},
                  "minimum_should_match":"4<80% 5<90% 10<95%",
                  "tie_breaker":0.1
                }
              },
	      {{/query_string}}
	      {{^query_string}}
	      "query":{
	        "match_all":{}
	      },
	      {{/query_string}}
              "score_mode":"sum",
              "boost_mode":"sum",
              "functions":[{
                "field_value_factor":{
                  "field":"capitalNumber",
                  "missing":0,
                  "modifier":"log1p",
                  "factor":0.1
                },
                "weight":20
              },{
                "field_value_factor":{
                  "field":"companyStatus",
                  "missing":0,
                  "factor":50
                }
              },{
                "field_value_factor":{
                  "field":"companyType",
                  "missing":0,
                  "factor":50
                }
              }]
            }
          },
	  {{#query_string}}
	  "should":[{
              "match_phrase":{
                  "historyName":{
                      "query":"{{query_string}}",
                      "slop":1
                  }
              }},
              {
              "match_phrase":{
                  "companyName":{
                      "query":"{{query_string}}",
                      "slop":1
                  }
              }},
	      {"match_phrase":{
		  "partnerStockName":{
			"query":"{{query_string}}",
                        "slop":1,
			"boost":1
		  }
	      }
          }],
	  {{/query_string}}
          "filter":{
            "bool":{
              "must":[
                {
                  "range":{
                    "companyType":{
                      "gte":0
                    }
                  }
                }
                {{#capitalMin}}
                ,
                {
                  "range":{
                    "capitalNumber":{
                      "gte":{{capitalMin}}
                    }
                  }
                }
                {{/capitalMin}}
                {{#capitalMax}}
                ,
                {
                  "range":{
                    "capitalNumber":{
                      "lt":{{capitalMax}}
                    }
                  }
                }
                {{/capitalMax}}
                {{#establishDateMin}}
                ,
                {
                  "range":{
                    "establishDate":{
                      "gte":{{establishDateMin}}
                    }
                  }
                }
                {{/establishDateMin}}
                {{#establishDateMax}}
                ,
                {
                  "range":{
                    "establishDate":{
                      "lt":{{establishDateMax}}
                    }
                  }
                }
                {{/establishDateMax}}
                {{#province}}
                ,
                {
                  "term":{
                    "province":"{{province}}"
                  }
                }
                {{/province}}
                {{#prefectureCity}}
                ,
                {
                  "term":{
                    "prefectureCity":"{{prefectureCity}}"
                  }
                }
                {{/prefectureCity}}
		{{#companyStatusStr}}
		,
		{
		  "term":{
		    "companyStatusStr":"{{companyStatusStr}}"
		  }
		}
		{{/companyStatusStr}}
		{{#companyTypeStr}}
		,
		{
		  "term":{
		    "companyTypeStr":"{{companyTypeStr}}"
		  }
		}
		{{/companyTypeStr}}
                {{#cid}}
                ,
                {
                  "term":{
                    "cid":{{cid}}
                  }
                }
                {{/cid}}
                {{#cid1}}
                ,
                {
                  "term":{
                    "cid1":{{cid1}}
                  }
                }
                {{/cid1}}
                {{#cid2}}
                ,
                {
                  "term":{
                    "cid2":{{cid2}}
                  }
                }
                {{/cid2}}
		{{#industryL1Name}}
		,
		{
		  "term":{
		    "industryL1Name":"{{industryL1Name}}"
		  }
		}
		{{/industryL1Name}}
		{{#industryL2Name}}
		,
		{
		  "term":{
		    "industryL2Name":"{{industryL2Name}}"
		  }
		}
		{{/industryL2Name}}
		{{#industryL3Name}}
		,
		{
		  "term":{
		    "industryL3Name":"{{industryL3Name}}"
		  }
		}
		{{/industryL3Name}}
                {{#useHasContact}}
                ,
                {
                  "term":{
                    "hasContact":{{hasContact}}
                  }
                }
                {{/useHasContact}}
		{{#useHasEmail}}
                ,
                {
                  "term":{
                    "hasEmail":{{hasEmail}}
                  }
                }
                {{/useHasEmail}}
		{{#useHasWebsites}}
                ,
                {
                  "term":{
                    "hasWebsites":{{hasWebsites}}
                  }
                }
                {{/useHasWebsites}}
		{{#useHasTrademark}}
                ,
                {
                  "term":{
                    "hasTrademark":{{hasTrademark}}
                  }
                }
                {{/useHasTrademark}}
		{{#useHasEntPatentInfo}}
                ,
                {
                  "term":{
                    "hasEntPatentInfo":{{hasEntPatentInfo}}
                  }
                }
                {{/useHasEntPatentInfo}}
		{{#useHasExecutedPerson}}
                ,
                {
                  "term":{
                    "hasExecutedPerson":{{hasExecutedPerson}}
                  }
                }
                {{/useHasExecutedPerson}}
		{{#useHasCopyrightWorks}}
                ,
                {
                  "term":{
                    "hasCopyrightWorks":{{hasCopyrightWorks}}
                  }
                }
                {{/useHasCopyrightWorks}}
		{{#useHasCopyrightReg}}
                ,
                {
                  "term":{
                    "hasCopyrightReg":{{hasCopyrightReg}}
                  }
                }
                {{/useHasCopyrightReg}}
		{{#useHasInsuranceAmount}}
                ,
                {
                  "term":{
                    "hasInsuranceAmount":{{hasInsuranceAmount}}
                  }
                }
                {{/useHasInsuranceAmount}}
		{{#useHasCompanyBid}}
                ,
                {
                  "term":{
                    "hasCompanyBid":{{hasCompanyBid}}
                  }
                }
                {{/useHasCompanyBid}}
		{{#useHasCompanyCustomsBusinessCredit}}
                ,
                {
                  "term":{
                    "hasCompanyCustomsBusinessCredit":{{hasCompanyCustomsBusinessCredit}}
                  }
                }
                {{/useHasCompanyCustomsBusinessCredit}}
		{{#useHasChattels}}
                ,
                {
                  "term":{
                    "hasChattels":{{hasChattels}}
                  }
                }
                {{/useHasChattels}}
		{{#useHasClears}}
                ,
                {
                  "term":{
                    "hasClears":{{hasClears}}
                  }
                }
                {{/useHasClears}}
		{{#useHasTax}}
                ,
                {
                  "term":{
                    "hasTax":{{hasTax}}
                  }
                }
                {{/useHasTax}}
                {{#limitMaxDate}}
                ,
                {
                  "range":{
                    "lastChangeDate":{
                      "lt":{{limitMaxDate}}
                    }
                  }
                },
                {
                  "term":{
                    "companyStatus":1
                  }
                }
                {{/limitMaxDate}}
                ]
            }
          }
        }
      },
      "highlight":{
        "fields":{
          "companyName":{},
          "historyName":{},
          "companyDesc":{},
          "businessScope":{},
          "employeeName":{},
          "legalPerson":{},
          "partnerStockName":{},
          "product":{},
          "trademark":{},
          "companyAddress":{},
	  "creditNo":{}
        },
        "fragment_size":20
      }
    }
    """
  }
}
  • 2、获取模版
GET _scripts/company_cha
  • 3、根据模版查询
GET company_new_index/_search/template
{
  "id":"company_cha_tmp",
  "params": {
    "query_string":"凭安征信",
    "industryL3Name":"咨询与调查"
  }
}